"""Lock model.""" from datetime import datetime, timezone from sqlalchemy import DateTime, String from sqlalchemy.orm import Mapped, mapped_column from app.models.base import Base, UUIDMixin def _utc_now() -> datetime: return datetime.now(timezone.utc) class Lock(Base, UUIDMixin): """Distributed lock record (fallback when Redis is unavailable).""" __tablename__ = "locks" lock_name: Mapped[str] = mapped_column(String(128), unique=True, nullable=False, index=True) owner_id: Mapped[str | None] = mapped_column(String(128), nullable=True) acquired_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), nullable=False, default=_utc_now ) expires_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)