from sqlmodel import SQLModel, Field from typing import Optional from datetime import datetime, timezone class User(SQLModel, table=True): id: Optional[int] = Field(default=None, primary_key=True) gitea_id: int = Field(unique=True, index=True) username: str = Field(index=True) full_name: Optional[str] = None email: Optional[str] = None role: str = Field(default="student") # admin, professor, lead, member, student is_active: bool = Field(default=True) created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc)) class Event(SQLModel, table=True): """Событие в расписании.""" id: Optional[int] = Field(default=None, primary_key=True) title: str event_type: str = Field(default="lecture") # lecture, workshop, meeting, personal start_time: datetime end_time: datetime location: Optional[str] = None description: Optional[str] = None status: str = Field(default="scheduled") # scheduled, moved, cancelled, delayed is_public: bool = Field(default=True) created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc)) class GlobalStatus(SQLModel, table=True): """Текущий статус Морозова.""" id: Optional[int] = Field(default=None, primary_key=True) status: str = Field(default="free") # free, on_place, delayed, away, cancelled delay_minutes: int = Field(default=0) message: Optional[str] = None updated_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))