55 lines
1.9 KiB
Python
55 lines
1.9 KiB
Python
# coding=utf-8
|
||
"""菜品名称表(总服务器权威;SQLite 可缓存镜像)。
|
||
|
||
说明:一张记录对应一道菜的标准名称,不是 XLS 里的「食材二级形态库」。
|
||
"""
|
||
from datetime import datetime
|
||
|
||
from sqlalchemy import Column, DateTime, Index, Integer, String
|
||
from sqlalchemy.orm import relationship
|
||
from sqlalchemy.sql import func
|
||
|
||
from dao.db import Base
|
||
|
||
|
||
class DishCategory(Base):
|
||
__tablename__ = 'dish_categories'
|
||
|
||
id = Column(Integer, primary_key=True, autoincrement=True, comment='主键ID')
|
||
# 业务上仅对 is_active=1 的名称保证唯一;软删除时由业务层改名避免撞约束
|
||
name = Column(String(100), nullable=False, unique=True, comment='菜品标准名称')
|
||
alias = Column(String(255), nullable=True, comment='别名(逗号分隔)')
|
||
create_time = Column(
|
||
DateTime,
|
||
nullable=False,
|
||
default=datetime.now,
|
||
server_default=func.now(),
|
||
comment='创建时间',
|
||
)
|
||
update_time = Column(
|
||
DateTime,
|
||
nullable=False,
|
||
default=datetime.now,
|
||
server_default=func.now(),
|
||
onupdate=datetime.now,
|
||
comment='更新时间(增量同步关键)',
|
||
)
|
||
is_active = Column(Integer, nullable=False, default=1, server_default='1', comment='是否启用:1启用 0软删除')
|
||
|
||
templates = relationship('GlobalTemplate', back_populates='category')
|
||
|
||
__table_args__ = (
|
||
Index('idx_dish_categories_active', 'is_active'),
|
||
Index('idx_dish_categories_update_time', 'update_time'),
|
||
)
|
||
|
||
def to_dict(self):
|
||
return {
|
||
'id': self.id,
|
||
'name': self.name,
|
||
'alias': self.alias,
|
||
'is_active': self.is_active,
|
||
'create_time': self.create_time.strftime('%Y-%m-%d %H:%M:%S') if self.create_time else None,
|
||
'update_time': self.update_time.strftime('%Y-%m-%d %H:%M:%S') if self.update_time else None,
|
||
}
|