| 1 | -- Records synced from external tap instance |
| 2 | CREATE TABLE IF NOT EXISTS repo_records ( |
| 3 | id INTEGER PRIMARY KEY AUTOINCREMENT, |
| 4 | did TEXT NOT NULL, |
| 5 | rkey TEXT NOT NULL, |
| 6 | collection TEXT NOT NULL, |
| 7 | cid TEXT, |
| 8 | synced_at TEXT DEFAULT (datetime('now')), |
| 9 | UNIQUE(did, collection, rkey) |
| 10 | ); |
| 11 | |
| 12 | CREATE INDEX IF NOT EXISTS idx_repo_records_collection ON repo_records(collection); |
| 13 | CREATE INDEX IF NOT EXISTS idx_repo_records_did ON repo_records(did); |
| 14 | CREATE INDEX IF NOT EXISTS idx_repo_records_rkey ON repo_records(rkey DESC); |
| 15 | |
| 16 | -- Cache for resolved PDS endpoints |
| 17 | CREATE TABLE IF NOT EXISTS pds_cache ( |
| 18 | did TEXT PRIMARY KEY, |
| 19 | pds_endpoint TEXT NOT NULL, |
| 20 | cached_at TEXT DEFAULT (datetime('now')) |
| 21 | ); |
| 22 | |
| 23 | -- Sync metadata to track last sync |
| 24 | CREATE TABLE IF NOT EXISTS sync_metadata ( |
| 25 | key TEXT PRIMARY KEY, |
| 26 | value TEXT NOT NULL, |
| 27 | updated_at TEXT DEFAULT (datetime('now')) |
| 28 | ); |
| 29 | |
| 30 | -- Pre-resolved documents for fast feed serving |
| 31 | CREATE TABLE IF NOT EXISTS resolved_documents ( |
| 32 | uri TEXT PRIMARY KEY, |
| 33 | did TEXT NOT NULL, |
| 34 | rkey TEXT NOT NULL, |
| 35 | -- Document fields |
| 36 | title TEXT, |
| 37 | description TEXT, |
| 38 | path TEXT, |
| 39 | site TEXT, |
| 40 | content TEXT, -- JSON blob for content union |
| 41 | text_content TEXT, |
| 42 | cover_image_cid TEXT, -- CID for cover image blob |
| 43 | cover_image_url TEXT, -- Full URL: {pds}/xrpc/com.atproto.sync.getBlob?did={did}&cid={cid} |
| 44 | bsky_post_ref TEXT, -- JSON blob for strong reference {uri, cid} |
| 45 | tags TEXT, -- JSON array of strings |
| 46 | published_at TEXT, |
| 47 | updated_at TEXT, |
| 48 | -- Publication fields (resolved from site at:// URI) |
| 49 | pub_url TEXT, -- Publication base URL |
| 50 | pub_name TEXT, |
| 51 | pub_description TEXT, |
| 52 | pub_icon_cid TEXT, -- CID for publication icon blob |
| 53 | pub_icon_url TEXT, -- Full URL to publication icon |
| 54 | -- Metadata |
| 55 | view_url TEXT, -- Constructed canonical URL (pub_url + path) |
| 56 | pds_endpoint TEXT, -- Cached PDS endpoint for this DID |
| 57 | resolved_at TEXT DEFAULT (datetime('now')), |
| 58 | stale_at TEXT, -- When this record should be re-resolved |
| 59 | verified INTEGER DEFAULT 0 -- Whether the record has been verified via .well-known or link tag |
| 60 | ); |
| 61 | |
| 62 | CREATE INDEX IF NOT EXISTS idx_resolved_documents_rkey ON resolved_documents(rkey DESC); |
| 63 | CREATE INDEX IF NOT EXISTS idx_resolved_documents_stale ON resolved_documents(stale_at); |
| 64 | CREATE INDEX IF NOT EXISTS idx_resolved_documents_pub_url ON resolved_documents(pub_url); |
| 65 | CREATE INDEX IF NOT EXISTS idx_resolved_documents_verified ON resolved_documents(verified); |