feat: Add database migrations and auth system
- Add Alembic for database migrations - Implement user authentication system - Update frontend styles and components - Add new test audio functionality - Update stream management and UI
This commit is contained in:
16
models.py
16
models.py
@ -8,7 +8,7 @@ from database import engine
|
||||
class User(SQLModel, table=True):
|
||||
token_created: datetime = Field(default_factory=datetime.utcnow)
|
||||
email: str = Field(primary_key=True)
|
||||
username: str
|
||||
username: str = Field(unique=True, index=True)
|
||||
token: str
|
||||
confirmed: bool = False
|
||||
ip: str = Field(default="")
|
||||
@ -23,11 +23,23 @@ class UploadLog(SQLModel, table=True):
|
||||
id: Optional[int] = Field(default=None, primary_key=True)
|
||||
uid: str
|
||||
ip: str
|
||||
filename: Optional[str]
|
||||
filename: Optional[str] # Original filename
|
||||
processed_filename: Optional[str] # Processed filename (UUID.opus)
|
||||
size_bytes: int
|
||||
created_at: datetime = Field(default_factory=datetime.utcnow)
|
||||
|
||||
|
||||
class DBSession(SQLModel, table=True):
|
||||
token: str = Field(primary_key=True)
|
||||
user_id: str = Field(foreign_key="user.username")
|
||||
ip_address: str
|
||||
user_agent: str
|
||||
created_at: datetime = Field(default_factory=datetime.utcnow)
|
||||
expires_at: datetime
|
||||
is_active: bool = True
|
||||
last_activity: datetime = Field(default_factory=datetime.utcnow)
|
||||
|
||||
|
||||
def get_user_by_uid(uid: str) -> Optional[User]:
|
||||
with Session(engine) as session:
|
||||
statement = select(User).where(User.username == uid)
|
||||
|
Reference in New Issue
Block a user