from datetime import datetime, timezone from sqlmodel import SQLModel, Field class Admin(SQLModel, table=True): id: int | None = Field(default=None, primary_key=True) username: str = Field(index=True, unique=True) password: str = Field(nullable=False) created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc)) class AdminCreate(SQLModel): username: str password: str class TokenResponse(SQLModel): access_token: str token_type: str = "bearer" class AdminCredential(SQLModel, table=True): id: int | None = Field(default=None, primary_key=True) admin_id: int = Field(foreign_key="admin.id") credential_id: bytes = Field(index=True, unique=True) public_key: bytes sign_count: int class AdminFIDO2Challenge(SQLModel, table=True): id: int | None = Field(default=None, primary_key=True) admin_id: int = Field(foreign_key="admin.id") challenge: str type: str # "registration" or "authentication" created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))