| 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" && |