"""Tenant-scoped key-value settings.""" import uuid from datetime import datetime from sqlalchemy import DateTime, ForeignKey, String, func from sqlalchemy.dialects.postgresql import JSONB, UUID from sqlalchemy.orm import Mapped, mapped_column from app.database import Base class TenantSetting(Base): """Per-tenant key-value settings (sparse, optional configs). Examples: key="github_token" value={"token": "ghp_xxx"} key="company_intro" value={"content": "..."} """ __tablename__ = "tenant_settings" tenant_id: Mapped[uuid.UUID] = mapped_column( UUID(as_uuid=True), ForeignKey("tenants.id", ondelete="CASCADE"), primary_key=True ) key: Mapped[str] = mapped_column(String(100), primary_key=True) value: Mapped[dict] = mapped_column(JSONB, nullable=False, default={}) updated_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), server_default=func.now(), onupdate=func.now() )