from typing import Optional from sqlalchemy import CHAR, String, TIMESTAMP, text from sqlalchemy.dialects.mysql import TINYINT from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column import datetime class Base(DeclarativeBase): pass class Uploads(Base): __tablename__ = 'uploads' hash: Mapped[str] = mapped_column(CHAR(64), primary_key=True) expiry: Mapped[Optional[datetime.datetime]] = mapped_column(TIMESTAMP, server_default=text('(current_timestamp()')) class Users(Base): __tablename__ = 'users' username: Mapped[str] = mapped_column(String(64), primary_key=True) password: Mapped[str] = mapped_column(String(128)) created_at: Mapped[Optional[datetime.datetime]] = mapped_column(TIMESTAMP, server_default=text('current_timestamp()')) temporary: Mapped[Optional[int]] = mapped_column(TINYINT(1), server_default=text('1'))