feat: Add base project structure with API and web components
This commit is contained in:
63
api/app/schemas/document_schema.py
Normal file
63
api/app/schemas/document_schema.py
Normal file
@@ -0,0 +1,63 @@
|
||||
from pydantic import BaseModel, Field, field_serializer, ConfigDict
|
||||
import datetime
|
||||
import uuid
|
||||
|
||||
|
||||
class DocumentBase(BaseModel):
|
||||
kb_id: uuid.UUID
|
||||
created_by: uuid.UUID | None = None
|
||||
file_id: uuid.UUID
|
||||
file_name: str
|
||||
file_ext: str
|
||||
file_size: int
|
||||
file_meta: dict
|
||||
parser_id: str
|
||||
parser_config: dict
|
||||
|
||||
|
||||
class DocumentCreate(DocumentBase):
|
||||
pass
|
||||
|
||||
|
||||
class DocumentUpdate(BaseModel):
|
||||
file_id: uuid.UUID | None = Field(None)
|
||||
file_name: str | None = Field(None)
|
||||
file_ext: str | None = Field(None)
|
||||
file_size: int | None = Field(None)
|
||||
file_meta: dict | None = Field(None)
|
||||
parser_id: str | None = Field(None)
|
||||
parser_config: dict | None = Field(None)
|
||||
chunk_num: int | None = Field(None)
|
||||
progress: float | None = Field(None)
|
||||
progress_msg: str | None = Field(None)
|
||||
process_begin_at: datetime.datetime | None = Field(None)
|
||||
process_duration: float | None = Field(None)
|
||||
run: int | None = Field(None)
|
||||
status: int | None = Field(None)
|
||||
|
||||
|
||||
class Document(DocumentBase):
|
||||
id: uuid.UUID
|
||||
chunk_num: int
|
||||
progress: float
|
||||
progress_msg: str
|
||||
process_begin_at: datetime.datetime
|
||||
process_duration: float
|
||||
run: int
|
||||
status: int
|
||||
created_at: datetime.datetime
|
||||
updated_at: datetime.datetime
|
||||
|
||||
@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
|
||||
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
@field_serializer("process_begin_at", when_used="json")
|
||||
def _serialize_process_begin_at(self, dt: datetime.datetime):
|
||||
return int(dt.timestamp() * 1000) if dt else None
|
||||
Reference in New Issue
Block a user