models.py 570 B

12345678910111213141516171819202122232425262728293031323334
  1. """Data models for the application."""
  2. from dataclasses import dataclass
  3. from datetime import datetime
  4. from typing import Optional, List
  5. @dataclass
  6. class User:
  7. id: str
  8. email: str
  9. name: str
  10. password_hash: str
  11. created_at: datetime
  12. @dataclass
  13. class Task:
  14. id: str
  15. user_id: str
  16. title: str
  17. description: Optional[str]
  18. completed: bool
  19. created_at: datetime
  20. completed_at: Optional[datetime] = None
  21. @dataclass
  22. class Project:
  23. id: str
  24. user_id: str
  25. name: str
  26. tasks: List[str] # Task IDs
  27. created_at: datetime