from datetime import datetime
from sqlalchemy import Column, Integer, String, TIMESTAMP, Text, JSON, Index
from deepinsight.databases.models import Base
class KnowledgeBase(Base):
__tablename__ = "knowledge_base"
kb_id = Column(Integer, primary_key=True, autoincrement=True)
owner_type = Column(String(50), nullable=False)
owner_id = Column(Integer, nullable=True)
root_dir = Column(String(255), nullable=False)
index_dir = Column(String(255))
parser = Column(String(50))
parse_method = Column(String(20))
embed_model = Column(String(100))
status = Column(String(20), nullable=False)
doc_count = Column(Integer, nullable=False, default=0)
last_built_at = Column(TIMESTAMP)
created_at = Column(TIMESTAMP, default=datetime.now)
updated_at = Column(TIMESTAMP, default=datetime.now, onupdate=datetime.now)
class KnowledgeDocument(Base):
__tablename__ = "knowledge_document"
__table_args__ = (
Index(None, 'kb_id'),
)
doc_id = Column(Integer, primary_key=True, autoincrement=True)
kb_id = Column(Integer, nullable=False)
file_path = Column(String(500), nullable=False)
file_name = Column(String(255))
md5 = Column(String(64))
parse_status = Column(String(20))
chunks_count = Column(Integer, nullable=False, default=0)
paper_meta = Column(JSON)
failed_reason = Column(Text)
created_at = Column(TIMESTAMP, default=datetime.now)
updated_at = Column(TIMESTAMP, default=datetime.now, onupdate=datetime.now)