A lil service that creates embeddings of posts, profiles, and avatars to store them in Qdrant
at main 2.3 kB view raw
1from typing import Optional, Dict, Any 2from pydantic import BaseModel, Field 3 4 5class AtKafkaOp(BaseModel): 6 action: str 7 collection: str 8 rkey: str 9 uri: str 10 cid: str 11 path: str 12 record: Optional[Dict[str, Any]] 13 14 15class AtKafkaIdentity(BaseModel): 16 seq: int 17 handle: str 18 19 20class AtKafkaInfo(BaseModel): 21 name: str 22 message: Optional[str] = None 23 24 25class AtKafkaAccount(BaseModel): 26 active: bool 27 seq: int 28 status: Optional[str] = None 29 30 31class DIDDocument(BaseModel): 32 context: Optional[list] = Field(None, alias="@context") 33 id: Optional[str] = None 34 also_known_as: Optional[list] = Field(None, alias="alsoKnownAs") 35 verification_method: Optional[list] = Field(None, alias="verificationMethod") 36 service: Optional[list] = None 37 38 class Config: 39 populate_by_name = True 40 41 42class ProfileViewDetailed(BaseModel): 43 did: str 44 handle: str 45 display_name: Optional[str] = Field(None, alias="displayName") 46 description: Optional[str] = None 47 avatar: Optional[str] = None 48 banner: Optional[str] = None 49 followers_count: Optional[int] = Field(None, alias="followersCount") 50 follows_count: Optional[int] = Field(None, alias="followsCount") 51 posts_count: Optional[int] = Field(None, alias="postsCount") 52 indexed_at: Optional[str] = Field(None, alias="indexedAt") 53 viewer: Optional[Dict[str, Any]] = None 54 labels: Optional[list] = None 55 56 class Config: 57 populate_by_name = True 58 59 60class EventMetadata(BaseModel): 61 did_document: Optional[DIDDocument] = Field(None, alias="didDocument") 62 pds_host: Optional[str] = Field(None, alias="pdsHost") 63 handle: Optional[str] = None 64 did_created_at: Optional[str] = Field(None, alias="didCreatedAt") 65 account_age: Optional[int] = Field(None, alias="accountAge") 66 profile: Optional[ProfileViewDetailed] = None 67 68 class Config: 69 populate_by_name = True 70 71 72class AtKafkaEvent(BaseModel): 73 did: str 74 timestamp: str 75 metadata: Optional[EventMetadata] = Field(None, alias="eventMetadata") 76 operation: Optional[AtKafkaOp] = None 77 account: Optional[AtKafkaAccount] = None 78 identity: Optional[AtKafkaIdentity] = None 79 info: Optional[AtKafkaInfo] = None 80 81 class Config: 82 populate_by_name = True