models.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. """
  2. Database models and data structures.
  3. Defines the core data models for projects, tasks, and annotations.
  4. """
  5. from datetime import datetime
  6. from typing import Optional
  7. class Project:
  8. """Project model representing a labeling project."""
  9. def __init__(
  10. self,
  11. id: str,
  12. name: str,
  13. description: str,
  14. config: str,
  15. created_at: datetime
  16. ):
  17. self.id = id
  18. self.name = name
  19. self.description = description
  20. self.config = config
  21. self.created_at = created_at
  22. @classmethod
  23. def from_row(cls, row):
  24. """Create Project instance from database row."""
  25. return cls(
  26. id=row["id"],
  27. name=row["name"],
  28. description=row["description"],
  29. config=row["config"],
  30. created_at=row["created_at"]
  31. )
  32. class Task:
  33. """Task model representing a labeling task."""
  34. def __init__(
  35. self,
  36. id: str,
  37. project_id: str,
  38. name: str,
  39. data: str,
  40. status: str,
  41. assigned_to: Optional[str],
  42. created_at: datetime
  43. ):
  44. self.id = id
  45. self.project_id = project_id
  46. self.name = name
  47. self.data = data
  48. self.status = status
  49. self.assigned_to = assigned_to
  50. self.created_at = created_at
  51. @classmethod
  52. def from_row(cls, row):
  53. """Create Task instance from database row."""
  54. return cls(
  55. id=row["id"],
  56. project_id=row["project_id"],
  57. name=row["name"],
  58. data=row["data"],
  59. status=row["status"],
  60. assigned_to=row["assigned_to"],
  61. created_at=row["created_at"]
  62. )
  63. class Annotation:
  64. """Annotation model representing a labeling result."""
  65. def __init__(
  66. self,
  67. id: str,
  68. task_id: str,
  69. user_id: str,
  70. result: str,
  71. created_at: datetime,
  72. updated_at: datetime
  73. ):
  74. self.id = id
  75. self.task_id = task_id
  76. self.user_id = user_id
  77. self.result = result
  78. self.created_at = created_at
  79. self.updated_at = updated_at
  80. @classmethod
  81. def from_row(cls, row):
  82. """Create Annotation instance from database row."""
  83. return cls(
  84. id=row["id"],
  85. task_id=row["task_id"],
  86. user_id=row["user_id"],
  87. result=row["result"],
  88. created_at=row["created_at"],
  89. updated_at=row["updated_at"]
  90. )