Files
111 daa8125c58
All checks were successful
continuous-integration/drone/push Build is passing
Initial commit: 000-platform project skeleton
2026-01-23 14:32:09 +08:00

48 lines
1.8 KiB
Python

"""租户相关模型"""
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)