Files
MemoryBear/api/app/schemas/knowledge_schema.py

70 lines
2.3 KiB
Python

from pydantic import BaseModel, Field, field_serializer, ConfigDict
import datetime
import uuid
from .user_schema import User
from .model_schema import ModelConfig
from typing import Optional
from app.models.knowledge_model import KnowledgeType, PermissionType
class KnowledgeBase(BaseModel):
workspace_id: uuid.UUID | None = None
created_by: uuid.UUID | None = None
parent_id: uuid.UUID | None = None
name: str
description: str | None = None
avatar: str | None = None
type: KnowledgeType | None = None
permission_id: PermissionType | None = None
embedding_id: uuid.UUID | None = None
reranker_id: uuid.UUID | None = None
llm_id: uuid.UUID | None = None
image2text_id: uuid.UUID | None = None
doc_num: int | None = None
chunk_num: int | None = None
parser_id: str | None = None
parser_config: dict | None = None
class KnowledgeCreate(KnowledgeBase):
pass
class KnowledgeUpdate(BaseModel):
parent_id: uuid.UUID | None = Field(None)
name: str | None = Field(None)
description: str | None = Field(None)
avatar: str | None = Field(None)
type: KnowledgeType | None = Field(None)
permission_id: PermissionType | None = Field(None)
embedding_id: uuid.UUID | None = Field(None)
reranker_id: uuid.UUID | None = Field(None)
llm_id: uuid.UUID | None = Field(None)
image2text_id: uuid.UUID | None = Field(None)
doc_num: int | None = Field(None)
chunk_num: int | None = Field(None)
parser_id: str | None = Field(None)
parser_config: dict | None = Field(None)
status: int | None = Field(None)
class Knowledge(KnowledgeBase):
id: uuid.UUID
status: int
created_at: datetime.datetime
updated_at: datetime.datetime
created_user: User
embedding: Optional[ModelConfig] = None
reranker: Optional[ModelConfig] = None
llm: Optional[ModelConfig] = None
image2text: Optional[ModelConfig] = None
model_config = ConfigDict(from_attributes=True)
@field_serializer("created_at", when_used="json")
def _serialize_created_at(self, dt: datetime.datetime):
return int(dt.timestamp() * 1000) if dt else None
@field_serializer("updated_at", when_used="json")
def _serialize_updated_at(self, dt: datetime.datetime):
return int(dt.timestamp() * 1000) if dt else None