from sqlmodel import SQLModel, Field, create_engine from typing import Optional from datetime import datetime class User(SQLModel, table=True): id: Optional[int] = Field(default=None, primary_key=True) username: str = Field(unique=True, index=True) password_hash: str display_name: Optional[str] class RecordedSession(SQLModel, table=True): id: Optional[int] = Field(default=None, primary_key=True) user_id: int session_name: str timestamp: datetime = Field(default_factory=datetime.now) class VideoFrame(SQLModel, table=True): id: Optional[int] = Field(default=None, primary_key=True) session_id: int = Field(foreign_key="recordedsession.id") frame_index: int image_array: bytes # NumPy-encoded frame keypoints: bytes # NumPy-encoded keypoints audio_chunk: bytes # NumPy-encoded audio chunk fps: int class Feedback(SQLModel, table=True): id: int = Field(default=None, primary_key=True) username: str content: str timestamp: datetime = Field(default_factory=datetime.now) class Exercise(SQLModel, table=True): id: int = Field(default=None, primary_key=True) username: str duration: str sta_time: str engine = create_engine("sqlite:///data/recordings.db")