28 lines
664 B
Python
28 lines
664 B
Python
from dataclasses import dataclass, field
|
|
from datetime import datetime, timezone
|
|
from typing import Any
|
|
|
|
@dataclass(frozen=True)
|
|
class SourceRef:
|
|
repository: str
|
|
path: str
|
|
revision: str = "main"
|
|
|
|
@dataclass(frozen=True)
|
|
class Document:
|
|
source: SourceRef
|
|
content: str
|
|
metadata: dict[str, Any] = field(default_factory=dict)
|
|
|
|
@dataclass(frozen=True)
|
|
class IngestionRequest:
|
|
source: SourceRef
|
|
destination: str = "sharepoint"
|
|
|
|
@dataclass(frozen=True)
|
|
class IngestionResult:
|
|
accepted: bool
|
|
document: Document | None = None
|
|
message: str = ""
|
|
created_at: datetime = field(default_factory=lambda: datetime.now(timezone.utc))
|