98 lines
3.6 KiB
Python
98 lines
3.6 KiB
Python
"""
|
|
SQLModel table definitions.
|
|
|
|
Generated by modelgen from core/schema/models/. Do not edit directly.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
from typing import Any, Dict, List, Optional
|
|
from uuid import UUID, uuid4
|
|
|
|
from sqlalchemy import JSON
|
|
from sqlmodel import Column, Field, SQLModel
|
|
|
|
|
|
class MediaAsset(SQLModel, table=True):
|
|
__tablename__ = "media_asset"
|
|
|
|
id: UUID = Field(default_factory=uuid4, primary_key=True)
|
|
filename: str
|
|
path: str
|
|
status: str = "pending"
|
|
size_bytes: int = 0
|
|
duration_seconds: float = 0.0
|
|
width: Optional[int] = None
|
|
height: Optional[int] = None
|
|
fps: Optional[float] = None
|
|
codec: Optional[str] = None
|
|
created_at: Optional[datetime] = Field(default_factory=datetime.utcnow)
|
|
|
|
|
|
class Job(SQLModel, table=True):
|
|
__tablename__ = "job"
|
|
|
|
id: UUID = Field(default_factory=uuid4, primary_key=True)
|
|
source_asset_id: UUID = Field(index=True)
|
|
video_path: str
|
|
profile_name: str = "soccer_broadcast"
|
|
parent_id: Optional[UUID] = Field(default=None, index=True)
|
|
run_type: str = "initial"
|
|
config_overrides: Dict[str, Any] = Field(default_factory=dict, sa_column=Column(JSON, nullable=False, server_default='{}'))
|
|
status: str = "pending"
|
|
current_stage: Optional[str] = None
|
|
progress: float = 0.0
|
|
error_message: Optional[str] = None
|
|
total_detections: int = 0
|
|
brands_found: int = 0
|
|
cloud_llm_calls: int = 0
|
|
estimated_cost_usd: float = 0.0
|
|
celery_task_id: Optional[str] = None
|
|
priority: int = 0
|
|
created_at: Optional[datetime] = Field(default_factory=datetime.utcnow)
|
|
started_at: Optional[datetime] = None
|
|
completed_at: Optional[datetime] = None
|
|
|
|
|
|
class Timeline(SQLModel, table=True):
|
|
__tablename__ = "timeline"
|
|
|
|
id: UUID = Field(default_factory=uuid4, primary_key=True)
|
|
source_asset_id: Optional[UUID] = Field(default=None, index=True)
|
|
source_video: str = ""
|
|
profile_name: str = ""
|
|
fps: float = 2.0
|
|
frames_prefix: str = ""
|
|
frames_manifest: Dict[str, Any] = Field(default_factory=dict, sa_column=Column(JSON, nullable=False, server_default='{}'))
|
|
frames_meta: List[str] = Field(default_factory=list, sa_column=Column(JSON, nullable=False, server_default='[]'))
|
|
created_at: Optional[datetime] = Field(default_factory=datetime.utcnow)
|
|
|
|
|
|
class Checkpoint(SQLModel, table=True):
|
|
__tablename__ = "checkpoint"
|
|
|
|
id: UUID = Field(default_factory=uuid4, primary_key=True)
|
|
timeline_id: UUID = Field(index=True)
|
|
parent_id: Optional[UUID] = Field(default=None, index=True)
|
|
stage_outputs: Dict[str, Any] = Field(default_factory=dict, sa_column=Column(JSON, nullable=False, server_default='{}'))
|
|
config_overrides: Dict[str, Any] = Field(default_factory=dict, sa_column=Column(JSON, nullable=False, server_default='{}'))
|
|
stats: Dict[str, Any] = Field(default_factory=dict, sa_column=Column(JSON, nullable=False, server_default='{}'))
|
|
is_scenario: bool = False
|
|
scenario_label: str = ""
|
|
created_at: Optional[datetime] = Field(default_factory=datetime.utcnow)
|
|
|
|
|
|
class Brand(SQLModel, table=True):
|
|
__tablename__ = "brand"
|
|
|
|
id: UUID = Field(default_factory=uuid4, primary_key=True)
|
|
canonical_name: str = Field(index=True)
|
|
aliases: List[str] = Field(default_factory=list, sa_column=Column(JSON, nullable=False, server_default='[]'))
|
|
source: str = "ocr"
|
|
confirmed: bool = False
|
|
airings: List[str] = Field(default_factory=list, sa_column=Column(JSON, nullable=False, server_default='[]'))
|
|
total_airings: int = 0
|
|
created_at: Optional[datetime] = Field(default_factory=datetime.utcnow)
|
|
updated_at: Optional[datetime] = Field(default_factory=datetime.utcnow)
|