| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- """Database operations."""
- from typing import Optional, List, Dict
- from models import User, Task, Project
- class Database:
- def __init__(self):
- self.users: Dict[str, User] = {}
- self.tasks: Dict[str, Task] = {}
- self.projects: Dict[str, Project] = {}
- def get_user(self, user_id: str) -> Optional[User]:
- return self.users.get(user_id)
- def get_user_by_email(self, email: str) -> Optional[User]:
- for user in self.users.values():
- if user.email == email:
- return user
- return None
- def create_user(self, user: User) -> None:
- self.users[user.id] = user
- def get_task(self, task_id: str) -> Optional[Task]:
- return self.tasks.get(task_id)
- def get_user_tasks(self, user_id: str) -> List[Task]:
- return [t for t in self.tasks.values() if t.user_id == user_id]
- def create_task(self, task: Task) -> None:
- self.tasks[task.id] = task
- def update_task(self, task_id: str, **updates) -> Optional[Task]:
- task = self.tasks.get(task_id)
- if task:
- for key, value in updates.items():
- setattr(task, key, value)
- return task
- def delete_task(self, task_id: str) -> bool:
- if task_id in self.tasks:
- del self.tasks[task_id]
- return True
- return False
- def get_project(self, project_id: str) -> Optional[Project]:
- return self.projects.get(project_id)
- def create_project(self, project: Project) -> None:
- self.projects[project.id] = project
- db = Database()
|