48 lines
1.8 KiB
Python
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)
|