From c1768114de381e37e272e9faf7db8e95a93ff381 Mon Sep 17 00:00:00 2001 From: zhaoqingang <zhaoqg0118@163.com> Date: 星期一, 11 十一月 2024 16:37:12 +0800 Subject: [PATCH] role group user.. --- app/models/group_model.py | 119 +++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 99 insertions(+), 20 deletions(-) diff --git a/app/models/group_model.py b/app/models/group_model.py index ec03d7d..52e05a8 100644 --- a/app/models/group_model.py +++ b/app/models/group_model.py @@ -2,49 +2,128 @@ from enum import IntEnum from typing import Optional -from sqlalchemy import Column, Integer, String, DateTime, Enum, Index +from sqlalchemy import Column, Integer, String, DateTime, Enum, Index, Table, ForeignKey from pydantic import BaseModel +from sqlalchemy.orm import relationship, backref + from app.models.base_model import Base -class GroupStatus(IntEnum): - NO = 1 - OFF = 0 + +group_knowledge_table = Table('group_Knowledge', Base.metadata + , Column('group_id', Integer, ForeignKey('group.id')) + , Column('knowledge_id', String(32), ForeignKey('knowledgebase.id'))) + +group_dialog_table = Table('group_dialogs', Base.metadata + , Column('group_id', Integer, ForeignKey('group.id')) + , Column('dialog_id', String(36), ForeignKey('dialogs.id'))) + +group_agent_table = Table('group_agent', Base.metadata + , Column('group_id', Integer, ForeignKey('group.id')) + , Column('agent_id', String(36), ForeignKey('user_canvas.id'))) + +group_llm_table = Table('group_llm', Base.metadata + , Column('group_id', Integer, ForeignKey('group.id')) + , Column('llm_id', String(36), ForeignKey('common_llm.id'))) + +group_unified_agent_table = Table('group_unified_agent', Base.metadata + , Column('group_id', Integer, ForeignKey('group.id')) + ,Column('unified_agent_id', String(36), ForeignKey('unified_agent.id'))) - -class GroupInfoModel(Base): - __tablename__ = "group_info" - group_id = Column(Integer, primary_key=True, index=True) +class GroupModel(Base): + __tablename__ = "group" + id = Column(Integer, primary_key=True, index=True) group_name = Column(String(255), unique=True, nullable=False, index=True) group_description = Column(String(255)) - group_status = Column(Integer, nullable=False, default=1) + status = Column(String(10), nullable=False, default="1") created_at = Column(DateTime, default=datetime.now()) updated_at = Column(DateTime, default=datetime.now(), onupdate=datetime.now()) + knowledges = relationship('KnowledgeModel', + secondary=group_knowledge_table, + backref=backref('groups', lazy='dynamic'), + lazy="dynamic") + + dialogs = relationship('DialogModel', + secondary=group_dialog_table, + backref=backref('groups', lazy='dynamic'), + lazy="dynamic") + + agents = relationship('CanvasModel', + secondary=group_agent_table, + backref=backref('groups', lazy='dynamic'), + lazy="dynamic") + + llms = relationship('CommonLlmModel', + secondary=group_llm_table, + backref=backref('groups', lazy='dynamic'), + lazy="dynamic") + + unified_agents = relationship('UnifiedAgentModel', + secondary=group_unified_agent_table, + backref=backref('roles', lazy='dynamic'), + lazy="dynamic") def to_dict(self): return { - 'id': self.group_id, + 'groupId': self.id, 'name': self.group_name, - 'group_description': self.group_description, - 'group_status': self.group_status, - 'created_at': self.created_at.strftime("%Y.%m.%d %H:%M") + 'description': self.group_description, + 'status': self.status, + 'createTime': self.created_at.strftime("%Y-%m-%d %H:%M:%S") } -class UserGroupModel(Base): - __tablename__ = "user_group" - id = Column(Integer, primary_key=True) - group_id = Column(Integer, nullable=False) - user_id = Column(Integer, nullable=False) - Index('ix_user_group_id', group_id, user_id, unique=True) + def get_id(self): + return str(self.ID) + + + def __repr__(self): + return '<Role name:%r description:%r iconCls:%r seq:%r>\n' \ + % (self.NAME, self.DESCRIPTION, self.ICONCLS, self.SEQ) + + def to_json(self): + json = { + 'roleId': self.id, + 'createTime': self.created_at.strftime('%Y-%m-%d %H:%M:%S'), + 'updateTime': self.updated_at.strftime('%Y-%m-%d %H:%M:%S'), + 'groupName': self.group_name, + 'remark': self.group_description, + 'status': self.status, + } + if len(self.knowledges.all()) > 0: + json['knowledges'] = [knowledge.to_json() for knowledge in self.knowledges] + + if len(self.dialogs.all()) > 0: + json['dialogs'] = [dialog.to_json() for dialog in self.dialogs] + + if len(self.agents.all()) > 0: + json['agents'] = [agent.to_json() for agent in self.agents] + + if len(self.llms.all()) > 0: + json['llms'] = [llm.to_json() for llm in self.llms] + + json['users'] = [user.to_dict() for user in self.users] + + if hasattr(self, 'flag'): + json['flag'] = self.flag + + return json + + +# class UserGroupModel(Base): +# __tablename__ = "user_group" +# id = Column(Integer, primary_key=True) +# group_id = Column(Integer, nullable=False) +# user_id = Column(Integer, nullable=False) +# Index('ix_user_group_id', group_id, user_id, unique=True) class GroupData(BaseModel): id: Optional[int] = None group_name: Optional[str] = "" group_description: Optional[str] = "" - group_status: Optional[int] = None + group_status: Optional[str] = "" class GroupUsers(BaseModel): id: int -- Gitblit v1.8.0