A fullstack app for indexing standard.site documents
8
fork

Configure Feed

Select the types of activity you want to include in your feed.

chore: adjustments to data flow

Steve 67de59c5 507360d8

+24 -7
+22 -5
packages/server/src/routes/webhook.ts
··· 1 1 import { Hono } from "hono"; 2 2 import type { Bindings, TapEvent } from "../types"; 3 - import { resolvePds, parseAtUri, resolveViewUrl } from "../utils"; 3 + import { resolveViewUrl } from "../utils"; 4 + 5 + const STALE_OFFSET_HOURS = 24; 4 6 5 7 const webhook = new Hono<{ Bindings: Bindings }>(); 6 8 ··· 64 66 await db 65 67 .prepare( 66 68 `INSERT INTO resolved_documents (uri, did, rkey, title, path, site, content, text_content, published_at, view_url, resolved_at, stale_at) 67 - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, datetime('now'), datetime('now', '+12 hours')) 69 + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, datetime('now'), datetime('now', '+${STALE_OFFSET_HOURS} hours')) 68 70 ON CONFLICT(uri) DO UPDATE SET 69 - title = ?, path = ?, site = ?, content = ?, text_content = ?, published_at = ?, view_url = ?, resolved_at = datetime('now'), stale_at = datetime('now', '+12 hours')` 71 + title = ?, path = ?, site = ?, content = ?, text_content = ?, published_at = ?, view_url = ?, resolved_at = datetime('now'), stale_at = datetime('now', '+${STALE_OFFSET_HOURS} hours')` 70 72 ) 71 73 .bind( 72 74 uri, ··· 89 91 ) 90 92 .run(); 91 93 } 94 + 95 + // Queue for immediate full processing (verification, publication resolution, etc.) 96 + await c.env.RESOLUTION_QUEUE.send({ 97 + did: record.did, 98 + collection: record.collection, 99 + rkey: record.rkey, 100 + }); 92 101 } else if (record.action === "delete") { 93 102 await db 94 103 .prepare( ··· 189 198 await db 190 199 .prepare( 191 200 `INSERT INTO resolved_documents (uri, did, rkey, title, path, site, content, text_content, published_at, view_url, resolved_at, stale_at) 192 - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, datetime('now'), datetime('now', '+12 hours')) 201 + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, datetime('now'), datetime('now', '+${STALE_OFFSET_HOURS} hours')) 193 202 ON CONFLICT(uri) DO UPDATE SET 194 - title = ?, path = ?, site = ?, content = ?, text_content = ?, published_at = ?, view_url = ?, resolved_at = datetime('now'), stale_at = datetime('now', '+12 hours')` 203 + title = ?, path = ?, site = ?, content = ?, text_content = ?, published_at = ?, view_url = ?, resolved_at = datetime('now'), stale_at = datetime('now', '+${STALE_OFFSET_HOURS} hours')` 195 204 ) 196 205 .bind( 197 206 uri, ··· 214 223 ) 215 224 .run(); 216 225 } 226 + 227 + // Queue for immediate full processing 228 + await c.env.RESOLUTION_QUEUE.send({ 229 + did: event.did, 230 + collection: event.collection, 231 + rkey: event.rkey, 232 + }); 233 + 217 234 processed++; 218 235 } else if ( 219 236 event.type === "delete" &&
+1 -1
packages/server/src/utils/document.ts
··· 204 204 const verified = await verifyDocumentRecord(pubUrl, site, viewUrl, uri); 205 205 206 206 // 7. Insert/update resolved_documents 207 - const STALE_OFFSET_HOURS = 12; 207 + const STALE_OFFSET_HOURS = 24; 208 208 209 209 await db 210 210 .prepare(
+1 -1
packages/server/wrangler.toml
··· 21 21 22 22 # Cron trigger to refresh stale documents 23 23 [triggers] 24 - crons = ["*/15 * * * *"] # Every 15 minutes 24 + crons = ["0 * * * *"] # Every hour (at minute 0) 25 25 26 26 # Environment variables (secrets should be set via wrangler secret) 27 27 # TAP_WEBHOOK_SECRET - Optional secret for webhook authentication