from datetime import datetime from sqlalchemy import DateTime, ForeignKey, String from sqlalchemy.orm import Mapped, mapped_column from app.db.base_class import Base class AccessRequest(Base): __tablename__ = "access_requests" id: Mapped[int] = mapped_column(primary_key=True) user_id: Mapped[int] = mapped_column(ForeignKey("users.id", ondelete="CASCADE")) server_id: Mapped[int] = mapped_column(ForeignKey("servers.id", ondelete="CASCADE")) status: Mapped[str] = mapped_column(String(16), default="requested") # requested|approved|denied|expired expires_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True)) reason: Mapped[str | None] = mapped_column(String(512))