knowledge_model.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import json
  2. from datetime import datetime
  3. from typing import Optional
  4. from pydantic import BaseModel
  5. from sqlalchemy import Column, Integer, String, Table, ForeignKey, DateTime, BigInteger, Text, Float, Boolean
  6. from sqlalchemy.orm import relationship, backref
  7. from app.models.base_model import Base
  8. class KnowledgeModel(Base):
  9. __tablename__ = 'knowledgebases'
  10. __mapper_args__ = {
  11. # "order_by": 'SEQ'
  12. }
  13. id = Column(String(36), primary_key=True) # id
  14. name = Column(String(128)) # 名称
  15. create_date = Column(DateTime, default=datetime.now()) # 创建时间
  16. update_date = Column(DateTime, default=datetime.now(), onupdate=datetime.now()) # 更新时间
  17. permission = Column(String(32), default="me")
  18. tenant_id = Column(String(32)) # 创建人id
  19. description = Column(Text) # 说明
  20. status = Column(String(1)) # 状态
  21. documents = Column(Integer, default=0) # 文档
  22. icon = Column(String(128)) # 文档
  23. knowledge_type = Column(String(1)) # 知识库平台
  24. embd_id = Column(String(128))
  25. def get_id(self):
  26. return str(self.id)
  27. def to_json(self, user_id=""):
  28. return {
  29. 'id': self.id,
  30. 'name': self.name,
  31. 'create_time': self.create_date.strftime('%Y-%m-%d %H:%M:%S'),
  32. 'update_time': self.update_date.strftime('%Y-%m-%d %H:%M:%S'),
  33. 'permission': self.permission,
  34. 'user_id': self.tenant_id,
  35. 'description': self.description,
  36. 'status': self.status,
  37. 'documents': self.documents if self.documents else 0,
  38. 'icon': self.icon,
  39. 'embd_id': self.embd_id,
  40. 'link': True if (self.tenant_id == user_id or user_id == "admin" ) and self.permission == "team" else False,
  41. }
  42. def __repr__(self):
  43. return '<Knowledge name:%r url:%r>\n' % (self.name, self.id)
  44. class klgParameter(BaseModel):
  45. id: str
  46. name: str
  47. description: Optional[str] = ""
  48. icon: str
  49. klgType: str
  50. class klgIcon(BaseModel):
  51. id: str
  52. icon: str
  53. class KnowledgeUserModel(Base):
  54. __tablename__ = 'knowledgebase_user'
  55. id = Column(Integer, primary_key=True) # id
  56. kb_id = Column(String(36))
  57. user_id = Column(Integer)
  58. create_date = Column(DateTime, default=datetime.now()) # 创建时间
  59. update_date = Column(DateTime, default=datetime.now(), onupdate=datetime.now()) # 更新时间
  60. status = Column(Integer) # 状态
  61. def get_id(self):
  62. return str(self.id)
  63. def to_json(self, user_id=""):
  64. return {
  65. 'id': self.id,
  66. 'kb_id': self.kb_id,
  67. 'create_time': self.create_date.strftime('%Y-%m-%d %H:%M:%S'),
  68. 'update_time': self.update_date.strftime('%Y-%m-%d %H:%M:%S'),
  69. 'user_id': self.user_id,
  70. 'status': self.status,
  71. 'owner': True if str(self.user_id) == user_id else False,
  72. }
  73. def __repr__(self):
  74. return '<Knowledge name:%r url:%r>\n' % (self.name, self.id)
  75. class KlgOwner(BaseModel):
  76. knowledgeId: str
  77. UserId: int