from datetime import UTC, datetime from sqlalchemy import TEXT, DateTime, Enum from sqlalchemy.orm import Mapped, mapped_column from db.base import Base from schemas.enums import ServiceSignatureStatus class ServiceSignature(Base): __tablename__ = "service_signatures" kid: Mapped[str] = mapped_column(TEXT, unique=True, nullable=False, primary_key=True) public_key: Mapped[str] = mapped_column(TEXT, nullable=False) service_name: Mapped[str] = mapped_column(TEXT, nullable=True) status: Mapped[ServiceSignatureStatus] = mapped_column( Enum(ServiceSignatureStatus, name="servicesignaturestatus"), nullable=False, default=ServiceSignatureStatus.INACTIVE, ) created_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), nullable=False, default=lambda: datetime.now(UTC), ) revoked_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), nullable=True)