You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.9 KiB
Python
95 lines
2.9 KiB
Python
from iti.applications.extensions import db
|
|
from iti.applications.common.crud import BaseModelMixin
|
|
from iti.applications.common.enums import StatusEnum
|
|
from iti.applications.common.utils import BaseSchema
|
|
from apiflask.fields import String, DateTime, Enum, Integer, Nested
|
|
|
|
|
|
class SysDictType(BaseModelMixin):
|
|
"""
|
|
字典类型表
|
|
"""
|
|
|
|
__tablename__ = "sys_dict_type"
|
|
type_name = db.Column(db.String(255), nullable=False, comment="类型名称")
|
|
type_code = db.Column(
|
|
db.String(128), nullable=False, unique=True, comment="类型编码"
|
|
)
|
|
desc = db.Column(db.Text, nullable=True, comment="类型描述")
|
|
sort = db.Column(db.Integer, nullable=False, default=0, comment="排序")
|
|
status = db.Column(
|
|
db.Enum(StatusEnum, values_callable=lambda x: [e.value for e in x]),
|
|
nullable=False,
|
|
default=StatusEnum.ENABLED.value,
|
|
comment="状态",
|
|
)
|
|
|
|
# 关系
|
|
data_list = db.relationship(
|
|
"SysDictData",
|
|
primaryjoin="SysDictType.type_code == SysDictData.type_code",
|
|
back_populates="type",
|
|
foreign_keys="SysDictData.type_code",
|
|
lazy="dynamic",
|
|
)
|
|
|
|
|
|
class SysDictData(BaseModelMixin):
|
|
"""
|
|
字典数据表
|
|
"""
|
|
|
|
__tablename__ = "sys_dict_data"
|
|
type_code = db.Column(db.String(36), nullable=False, comment="类型编码")
|
|
label = db.Column(db.String(255), nullable=False, comment="数据标签")
|
|
code = db.Column(db.String(128), nullable=False, comment="数据编码")
|
|
value = db.Column(db.Text, nullable=True, comment="数据值")
|
|
desc = db.Column(db.Text, nullable=True, comment="数据描述")
|
|
sort = db.Column(db.Integer, nullable=False, default=0, comment="排序")
|
|
status = db.Column(
|
|
db.Enum(StatusEnum, values_callable=lambda x: [e.value for e in x]),
|
|
nullable=False,
|
|
default=StatusEnum.ENABLED.value,
|
|
comment="状态",
|
|
)
|
|
|
|
# 关系
|
|
type = db.relationship(
|
|
"SysDictType",
|
|
primaryjoin="SysDictData.type_code == SysDictType.type_code",
|
|
back_populates="data_list",
|
|
foreign_keys=type_code,
|
|
)
|
|
|
|
|
|
class SysDictTypeSchema(BaseSchema):
|
|
id = String()
|
|
type_name = String()
|
|
type_code = String()
|
|
desc = String()
|
|
sort = Integer()
|
|
status = Enum(StatusEnum, by_value=True)
|
|
created_at = DateTime(format="%Y-%m-%d %H:%M:%S")
|
|
updated_at = DateTime(format="%Y-%m-%d %H:%M:%S")
|
|
# 关系
|
|
data_list = Nested("SysDictDataSchema", many=True, dump_only=True, exclude=["type"])
|
|
|
|
|
|
class SysDictDataSchema(BaseSchema):
|
|
id = String()
|
|
type_code = String()
|
|
label = String()
|
|
code = String()
|
|
value = String()
|
|
desc = String()
|
|
sort = Integer()
|
|
status = Enum(StatusEnum, by_value=True)
|
|
created_at = DateTime(format="%Y-%m-%d %H:%M:%S")
|
|
updated_at = DateTime(format="%Y-%m-%d %H:%M:%S")
|
|
# 关系
|
|
type = Nested(
|
|
"SysDictTypeSchema",
|
|
dump_only=True,
|
|
exclude=["data_list"],
|
|
)
|