48 lines
1.8 KiB
Python
48 lines
1.8 KiB
Python
#!/usr/bin/env python
|
||
# -*- coding: utf-8 -*-
|
||
|
||
"""
|
||
接口定义历史模型
|
||
对应interfacedefhistory表
|
||
"""
|
||
|
||
import datetime
|
||
from sqlalchemy import Column, String, Integer, DateTime, UniqueConstraint, Index
|
||
from sqlalchemy.dialects.mysql import LONGTEXT
|
||
from data.models.base import BaseModel
|
||
|
||
|
||
class InterfaceDefHistory(BaseModel):
|
||
"""
|
||
接口定义历史模型
|
||
对应interfacedefhistory表
|
||
功能:存储系统接口的定义和版本历史
|
||
"""
|
||
__tablename__ = 'interfacedefhistory'
|
||
|
||
# 唯一约束和索引
|
||
__table_args__ = (
|
||
UniqueConstraint('method', 'url', 'version', name='uniq'),
|
||
Index('idx_interfacedefhistory_method', 'method'),
|
||
Index('idx_interfacedefhistory_url', 'url'),
|
||
Index('idx_interfacedefhistory_version', 'version'),
|
||
Index('idx_interfacedefhistory_project_id', 'project_id'),
|
||
Index('idx_interfacedefhistory_created_at', 'created_at'),
|
||
{
|
||
'mysql_engine': 'InnoDB',
|
||
'mysql_charset': 'utf8mb4',
|
||
'mysql_collate': 'utf8mb4_general_ci',
|
||
'info': {'order_by': 'created_at DESC'}
|
||
}
|
||
)
|
||
|
||
id = Column(String(255), primary_key=True, nullable=False, comment='接口定义历史记录ID')
|
||
create_date = Column(DateTime, default=datetime.datetime.now, comment='创建日期')
|
||
detail = Column(LONGTEXT, comment='接口详细定义(JSON格式)')
|
||
method = Column(String(255), nullable=False, comment='请求方法(GET, POST, PUT, DELETE等)')
|
||
project_id = Column(String(255), comment='关联的项目ID')
|
||
url = Column(String(255), nullable=False, comment='接口URL')
|
||
version = Column(Integer, comment='版本号')
|
||
|
||
def __repr__(self):
|
||
return f"<InterfaceDefHistory(id='{self.id}', method='{self.method}', url='{self.url}', version='{self.version}')>" |