File size: 899 Bytes
5c793cc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
from dataclasses import dataclass, field
from datetime import datetime
from typing import Any


@dataclass(frozen=True)
class PostSourceRecord:
    id: str
    document: str
    metadata: dict[str, Any]
    content_hash: str
    is_active: bool
    author_type: str | None = None
    author_id: str | None = None
    published_at: datetime | None = None
    source_version: int | None = None


@dataclass(frozen=True)
class PostChangeRecord:
    event_id: int
    post_id: str
    operation: str
    source_version: int
    post: PostSourceRecord | None = None


@dataclass(frozen=True)
class PostEmbeddingRecord:
    source: PostSourceRecord
    embedding: list[float]
    versioned_hash: str


@dataclass
class PostSyncResult:
    processed: int = 0
    skipped: int = 0
    upserted: int = 0
    deactivated: int = 0
    last_event_id: int = 0
    errors: list[str] = field(default_factory=list)