Files
fastcon-backend/app/internal/models.py

31 lines
1.0 KiB
Python
Raw Normal View History

2026-02-21 14:56:19 +08:00
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))