1
0

database.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. """Database operations."""
  2. from typing import Optional, List, Dict
  3. from models import User, Task, Project
  4. class Database:
  5. def __init__(self):
  6. self.users: Dict[str, User] = {}
  7. self.tasks: Dict[str, Task] = {}
  8. self.projects: Dict[str, Project] = {}
  9. def get_user(self, user_id: str) -> Optional[User]:
  10. return self.users.get(user_id)
  11. def get_user_by_email(self, email: str) -> Optional[User]:
  12. for user in self.users.values():
  13. if user.email == email:
  14. return user
  15. return None
  16. def create_user(self, user: User) -> None:
  17. self.users[user.id] = user
  18. def get_task(self, task_id: str) -> Optional[Task]:
  19. return self.tasks.get(task_id)
  20. def get_user_tasks(self, user_id: str) -> List[Task]:
  21. return [t for t in self.tasks.values() if t.user_id == user_id]
  22. def create_task(self, task: Task) -> None:
  23. self.tasks[task.id] = task
  24. def update_task(self, task_id: str, **updates) -> Optional[Task]:
  25. task = self.tasks.get(task_id)
  26. if task:
  27. for key, value in updates.items():
  28. setattr(task, key, value)
  29. return task
  30. def delete_task(self, task_id: str) -> bool:
  31. if task_id in self.tasks:
  32. del self.tasks[task_id]
  33. return True
  34. return False
  35. def get_project(self, project_id: str) -> Optional[Project]:
  36. return self.projects.get(project_id)
  37. def create_project(self, project: Project) -> None:
  38. self.projects[project.id] = project
  39. db = Database()