36 lines
1010 B
Python
36 lines
1010 B
Python
# models.py — UploadLog table (SQLModel) and related models
|
|
|
|
from sqlmodel import SQLModel, Field, Session, select
|
|
from typing import Optional
|
|
from datetime import datetime
|
|
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
|
|
token: str
|
|
confirmed: bool = False
|
|
ip: str = Field(default="")
|
|
|
|
|
|
class UserQuota(SQLModel, table=True):
|
|
uid: str = Field(primary_key=True)
|
|
storage_bytes: int = 0
|
|
|
|
|
|
class UploadLog(SQLModel, table=True):
|
|
id: Optional[int] = Field(default=None, primary_key=True)
|
|
uid: str
|
|
ip: str
|
|
filename: Optional[str]
|
|
size_bytes: int
|
|
created_at: 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)
|
|
result = session.exec(statement).first()
|
|
return result
|