hxf/backend/th_agenter/models/database_config.py

52 lines
2.0 KiB
Python
Raw Normal View History

2025-12-04 14:48:38 +08:00
"""数据库配置模型"""
2025-12-17 19:26:36 +08:00
from sqlalchemy import Column, Integer, String, Text, DateTime, Boolean, JSON
from sqlalchemy.sql import func
2025-12-04 14:48:38 +08:00
from ..db.base import BaseModel
# 在现有的DatabaseConfig类中添加关系
from sqlalchemy.orm import relationship
class DatabaseConfig(BaseModel):
"""数据库配置表"""
__tablename__ = "database_configs"
2025-12-17 19:26:36 +08:00
id = Column(Integer, primary_key=True, index=True)
name = Column(String(100), nullable=False) # 配置名称
db_type = Column(String(20), nullable=False, unique=True) # 数据库类型postgresql, mysql等
host = Column(String(255), nullable=False)
port = Column(Integer, nullable=False)
database = Column(String(100), nullable=False)
username = Column(String(100), nullable=False)
password = Column(Text, nullable=False) # 加密存储
is_active = Column(Boolean, default=True)
is_default = Column(Boolean, default=False)
connection_params = Column(JSON, nullable=True) # 额外连接参数
2025-12-04 14:48:38 +08:00
def to_dict(self, include_password=False, decrypt_service=None):
result = {
"id": self.id,
"created_by": self.created_by,
"name": self.name,
"db_type": self.db_type,
"host": self.host,
"port": self.port,
"database": self.database,
"username": self.username,
"is_active": self.is_active,
"is_default": self.is_default,
"connection_params": self.connection_params,
"created_at": self.created_at.isoformat() if self.created_at else None,
"updated_at": self.updated_at.isoformat() if self.updated_at else None
}
# 如果需要包含密码且提供了解密服务
if include_password and decrypt_service:
2025-12-17 19:26:36 +08:00
print('begin decrypt password')
2025-12-04 14:48:38 +08:00
result["password"] = decrypt_service._decrypt_password(self.password)
return result
# 添加关系
# table_metadata = relationship("TableMetadata", back_populates="database_config")