| | 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 |
| | keypoints: bytes |
| | audio_chunk: bytes |
| | 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") |
| |
|