···1313import { MAX_BLOB_SIZE, MAX_FILE_COUNT, MAX_SITE_SIZE } from '@wispplace/constants';
1414import { createLogger } from '@wispplace/observability';
1515import { writeFile, deleteFile, listFiles } from './storage';
1616-import { getSiteCache, upsertSiteCache, deleteSiteCache, upsertSiteSettingsCache, deleteSiteSettingsCache } from './db';
1616+import { getSiteCache, upsertSiteCache, deleteSiteCache, upsertSiteSettingsCache, deleteSiteSettingsCache, upsertSite, deleteSite } from './db';
1717import { rewriteHtmlPaths, isHtmlFile } from './html-rewriter';
1818import { gunzipSync } from 'zlib';
1919import { publishCacheInvalidation } from './cache-invalidation';
···550550 // Update DB with new CIDs
551551 logger.debug(`About to upsert site cache for ${did}/${rkey}`);
552552 await upsertSiteCache(did, rkey, recordCid, newFileCids);
553553+ await upsertSite(did, rkey, record.site);
553554 logger.debug(`Updated site cache for ${did}/${rkey} with record CID ${recordCid}`);
554555555556 // Backfill settings if a record exists for this rkey
···585586586587 // Delete from DB
587588 await deleteSiteCache(did, rkey);
589589+ await deleteSite(did, rkey);
588590589591 // Notify hosting-service to invalidate its local caches
590592 await publishCacheInvalidation(did, rkey, 'delete');
+15
apps/firehose-service/src/lib/db.ts
···147147 await sql`DELETE FROM site_settings_cache WHERE did = ${did} AND rkey = ${rkey}`;
148148}
149149150150+export async function upsertSite(did: string, rkey: string, displayName: string): Promise<void> {
151151+ await sql`
152152+ INSERT INTO sites (did, rkey, display_name, created_at, updated_at)
153153+ VALUES (${did}, ${rkey}, ${displayName}, EXTRACT(EPOCH FROM NOW()), EXTRACT(EPOCH FROM NOW()))
154154+ ON CONFLICT (did, rkey)
155155+ DO UPDATE SET
156156+ display_name = EXCLUDED.display_name,
157157+ updated_at = EXTRACT(EPOCH FROM NOW())
158158+ `;
159159+}
160160+161161+export async function deleteSite(did: string, rkey: string): Promise<void> {
162162+ await sql`DELETE FROM sites WHERE did = ${did} AND rkey = ${rkey}`;
163163+}
164164+150165export async function closeDatabase(): Promise<void> {
151166 await sql.end({ timeout: 5 });
152167 logger.info('[DB] Database connections closed');