| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- """
- Database models and data structures.
- Defines the core data models for projects, tasks, annotations, and users.
- """
- from datetime import datetime
- from typing import Optional
- class User:
- """User model representing a system user."""
-
- def __init__(
- self,
- id: str,
- username: str,
- email: str,
- password_hash: str,
- role: str,
- oauth_provider: Optional[str],
- oauth_id: Optional[str],
- created_at: datetime
- ):
- self.id = id
- self.username = username
- self.email = email
- self.password_hash = password_hash
- self.role = role
- self.oauth_provider = oauth_provider # 预留 OAuth
- self.oauth_id = oauth_id # 预留 OAuth
- self.created_at = created_at
-
- @classmethod
- def from_row(cls, row):
- """Create User instance from database row."""
- return cls(
- id=row["id"],
- username=row["username"],
- email=row["email"],
- password_hash=row["password_hash"],
- role=row["role"],
- oauth_provider=row["oauth_provider"] if "oauth_provider" in row.keys() else None,
- oauth_id=row["oauth_id"] if "oauth_id" in row.keys() else None,
- created_at=row["created_at"]
- )
- 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"]
- )
|