""" Database models and data structures. Defines the core data models for projects, tasks, and annotations. """ from datetime import datetime from typing import Optional class Project: """Project model representing a labeling project.""" def __init__( self, id: str, name: str, description: str, config: str, created_at: datetime ): self.id = id self.name = name self.description = description self.config = config self.created_at = created_at @classmethod def from_row(cls, row): """Create Project instance from database row.""" return cls( id=row["id"], name=row["name"], description=row["description"], config=row["config"], created_at=row["created_at"] ) class Task: """Task model representing a labeling task.""" def __init__( self, id: str, project_id: str, name: str, data: str, status: str, assigned_to: Optional[str], created_at: datetime ): self.id = id self.project_id = project_id self.name = name self.data = data self.status = status self.assigned_to = assigned_to self.created_at = created_at @classmethod def from_row(cls, row): """Create Task instance from database row.""" return cls( id=row["id"], project_id=row["project_id"], name=row["name"], data=row["data"], status=row["status"], assigned_to=row["assigned_to"], created_at=row["created_at"] ) class Annotation: """Annotation model representing a labeling result.""" def __init__( self, id: str, task_id: str, user_id: str, result: str, created_at: datetime, updated_at: datetime ): self.id = id self.task_id = task_id self.user_id = user_id self.result = result self.created_at = created_at self.updated_at = updated_at @classmethod def from_row(cls, row): """Create Annotation instance from database row.""" return cls( id=row["id"], task_id=row["task_id"], user_id=row["user_id"], result=row["result"], created_at=row["created_at"], updated_at=row["updated_at"] )