"""租户相关模型""" from datetime import datetime, date from sqlalchemy import Column, BigInteger, String, Enum, Date, Text, Boolean, JSON, TIMESTAMP from ..database import Base class Tenant(Base): """租户表""" __tablename__ = "platform_tenants" id = Column(BigInteger, primary_key=True, autoincrement=True) code = Column(String(50), unique=True, nullable=False) name = Column(String(100), nullable=False) contact_info = Column(JSON) status = Column(Enum('active', 'expired', 'trial'), default='active') expired_at = Column(Date) created_at = Column(TIMESTAMP, default=datetime.now) updated_at = Column(TIMESTAMP, default=datetime.now, onupdate=datetime.now) class Subscription(Base): """订阅表""" __tablename__ = "platform_subscriptions" id = Column(BigInteger, primary_key=True, autoincrement=True) tenant_id = Column(BigInteger, nullable=False) app_code = Column(String(50), nullable=False) start_date = Column(Date) end_date = Column(Date) quota = Column(JSON) status = Column(Enum('active', 'expired'), default='active') created_at = Column(TIMESTAMP, default=datetime.now) updated_at = Column(TIMESTAMP, default=datetime.now, onupdate=datetime.now) class Config(Base): """配置表""" __tablename__ = "platform_configs" id = Column(BigInteger, primary_key=True, autoincrement=True) tenant_id = Column(BigInteger, nullable=False) config_type = Column(String(50), nullable=False) config_key = Column(String(100), nullable=False) config_value = Column(Text) is_encrypted = Column(Boolean, default=False) created_at = Column(TIMESTAMP, default=datetime.now) updated_at = Column(TIMESTAMP, default=datetime.now, onupdate=datetime.now)