haiku.rag/haiku_rag_slim/haiku/rag/store/models/document.py
2025-12-08 15:54:31 +02:00

36 lines
1 KiB
Python

from datetime import datetime
from typing import TYPE_CHECKING
from pydantic import BaseModel, Field
if TYPE_CHECKING:
from docling_core.types.doc.document import DoclingDocument
class Document(BaseModel):
"""
Represents a document with an ID, content, and metadata.
"""
id: str | None = None
content: str
uri: str | None = None
title: str | None = None
metadata: dict = {}
docling_document_json: str | None = None
docling_version: str | None = None
created_at: datetime = Field(default_factory=datetime.now)
updated_at: datetime = Field(default_factory=datetime.now)
def get_docling_document(self) -> "DoclingDocument | None":
"""Parse and return the stored DoclingDocument.
Returns:
The parsed DoclingDocument, or None if not stored.
"""
if self.docling_document_json is None:
return None
from docling_core.types.doc.document import DoclingDocument
return DoclingDocument.model_validate_json(self.docling_document_json)