""" 数据库模型定义 包含请求历史、收藏夹、环境变量等模型 @author huazm """ from datetime import datetime from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() class RequestHistory(db.Model): """请求历史记录模型""" __tablename__ = 'request_history' id = db.Column(db.Integer, primary_key=True, autoincrement=True) method = db.Column(db.String(10), nullable=False) url = db.Column(db.Text, nullable=False) headers = db.Column(db.Text) # JSON 格式 params = db.Column(db.Text) # JSON 格式 body = db.Column(db.Text) body_type = db.Column(db.String(20)) # json, form, xml, raw auth_type = db.Column(db.String(20)) # bearer, basic, apikey, oauth2 auth_config = db.Column(db.Text) # JSON 格式 # 响应信息 response_body = db.Column(db.Text) response_headers = db.Column(db.Text) # JSON 格式 status_code = db.Column(db.Integer) duration = db.Column(db.Float) # 请求耗时(毫秒) # 元信息 created_at = db.Column(db.DateTime, default=datetime.utcnow) def to_dict(self): """转换为字典""" return { 'id': self.id, 'method': self.method, 'url': self.url, 'headers': self.headers, 'params': self.params, 'body': self.body, 'bodyType': self.body_type, 'authType': self.auth_type, 'authConfig': self.auth_config, 'responseBody': self.response_body, 'responseHeaders': self.response_headers, 'statusCode': self.status_code, 'duration': self.duration, 'createdAt': self.created_at.isoformat() if self.created_at else None } class Collection(db.Model): """收藏夹模型""" __tablename__ = 'collections' id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(100), nullable=False) description = db.Column(db.Text) folder = db.Column(db.String(100)) # 文件夹分组 method = db.Column(db.String(10), nullable=False) url = db.Column(db.Text, nullable=False) headers = db.Column(db.Text) params = db.Column(db.Text) body = db.Column(db.Text) body_type = db.Column(db.String(20)) auth_type = db.Column(db.String(20)) auth_config = db.Column(db.Text) tags = db.Column(db.Text) # JSON 数组 created_at = db.Column(db.DateTime, default=datetime.utcnow) updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) def to_dict(self): """转换为字典""" return { 'id': self.id, 'name': self.name, 'description': self.description, 'folder': self.folder, 'method': self.method, 'url': self.url, 'headers': self.headers, 'params': self.params, 'body': self.body, 'bodyType': self.body_type, 'authType': self.auth_type, 'authConfig': self.auth_config, 'tags': self.tags, 'createdAt': self.created_at.isoformat() if self.created_at else None, 'updatedAt': self.updated_at.isoformat() if self.updated_at else None } class Environment(db.Model): """环境变量模型""" __tablename__ = 'environments' id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(50), nullable=False, unique=True) variables = db.Column(db.Text) # JSON 格式 {"key": "value"} is_active = db.Column(db.Boolean, default=False) created_at = db.Column(db.DateTime, default=datetime.utcnow) def to_dict(self): """转换为字典""" return { 'id': self.id, 'name': self.name, 'variables': self.variables, 'isActive': self.is_active, 'createdAt': self.created_at.isoformat() if self.created_at else None }