Files
long2ice e8069484f5 update README.rst
add support to fk
2020-04-06 21:41:06 +08:00

90 lines
3.4 KiB
Python

from tortoise import fields
from . import BaseModel
from .enums import AliYunSecretCategory, BaiduAiCategory, Status, DeviceSys
from fastapi_admin.models import User as AdminUser
class User(AdminUser, BaseModel):
last_login = fields.DatetimeField(description='上次登录')
def __str__(self):
return f'{self.pk}#{self.username}'
class AliYunSecret(BaseModel):
app_id = fields.CharField(max_length=50)
app_secret = fields.CharField(max_length=50)
category = fields.IntEnumField(AliYunSecretCategory, description='类别', default=AliYunSecretCategory.sms)
class AliYunOss(BaseModel):
bucket = fields.CharField(max_length=50, unique=True, description='仓库')
domain = fields.CharField(max_length=200, description='域名')
endpoint = fields.CharField(max_length=200, description='端点')
aliyun_secret = fields.ForeignKeyField('models.AliYunSecret', related_name='aliyunoss')
class App(BaseModel):
uaid = fields.IntField(unique=True)
label = fields.CharField(max_length=20)
secret = fields.CharField(max_length=16, description='通信密钥')
work_secret = fields.CharField(max_length=100, description='企业微信密钥')
def __str__(self):
return f'{self.uaid}#{self.label}'
class AppSms(BaseModel):
app = fields.ForeignKeyField('models.App', related_name='app_sms')
scene = fields.CharField(max_length=50, description='使用场景')
aliyun_secret = fields.ForeignKeyField('models.AliYunSecret', related_name='app_sms')
sign_name = fields.CharField(max_length=20, description='签名')
template_code = fields.CharField(max_length=20, description='模板编号')
class Meta:
unique_together = (('app', 'scene'),)
class BaiduAi(BaseModel):
app_id = fields.CharField(max_length=50)
api_key = fields.CharField(max_length=50)
app_secret = fields.CharField(max_length=50)
category = fields.IntEnumField(BaiduAiCategory, description='应用类别', default=BaiduAiCategory.id_card)
def __str__(self):
return f'{self.pk}#{self.app_id}'
class AppBaiduAi(BaseModel):
app = fields.ForeignKeyField('models.App', related_name='app_baidu_ais')
baidu_ai = fields.ForeignKeyField('models.BaiduAi', related_name='app_baidu_ais')
class Config(BaseModel):
label = fields.CharField(max_length=200)
key = fields.CharField(max_length=20)
value = fields.JSONField()
status: Status = fields.IntEnumField(Status, default=Status.on, description='状态')
class ApiLog(BaseModel):
app = fields.ForeignKeyField('models.App', related_name='api_logs')
endpoint = fields.CharField(max_length=50)
success = fields.BooleanField(default=True, description='是否成功')
status_code = fields.SmallIntField(description='状态码')
class AppVersion(BaseModel):
app = fields.ForeignKeyField('models.App', related_name='app_versions')
channel = fields.CharField(max_length=20, description='渠道')
device_sys = fields.IntEnumField(DeviceSys, default=DeviceSys.android, description='操作系统')
version_code = fields.CharField(max_length=20, description='版本号')
describe = fields.CharField(max_length=200, description='描述')
download_url = fields.CharField(max_length=200, description='下载链接')
is_update = fields.BooleanField(default=False, description='是否更新')
class Meta:
ordering = ['-id']
indexes = (('app', 'device_sys', 'channel'),)