refactor(db): lazy-init connection and add test seam
The Database handle is now constructed on first use and held in a module-level slot. New _setDbForTest and _resetDbForTest exports let tests swap in a :memory: handle without rewriting callers. closeDb() replaces the previous db.close() pattern used by short-lived scripts. Adds listDistinctNoteDids() to keep the backfill script from poking the raw connection.
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
// Requires OPENSEARCH_URL to be set; falls back to a no-op otherwise.
|
||||
// SQLite path follows the same SQLITE_PATH convention as the server/jetstream.
|
||||
|
||||
import { db } from "../src/data/db.ts";
|
||||
import { closeDb, listDistinctNoteDids } from "../src/data/db.ts";
|
||||
import { resolvePds } from "../src/auth/verify.ts";
|
||||
import { ensureIndex, indexNote } from "../src/search/opensearch.ts";
|
||||
import { log } from "../src/log.ts";
|
||||
@@ -100,14 +100,12 @@ const main = async () => {
|
||||
Deno.exit(1);
|
||||
}
|
||||
|
||||
const rows = db.prepare("SELECT DISTINCT did FROM note ORDER BY did").all<
|
||||
{ did: string }
|
||||
>();
|
||||
log(`[backfill] ${rows.length} DID(s) to process`);
|
||||
const dids = listDistinctNoteDids();
|
||||
log(`[backfill] ${dids.length} DID(s) to process`);
|
||||
|
||||
let totalIndexed = 0;
|
||||
let totalFailed = 0;
|
||||
for (const { did } of rows) {
|
||||
for (const did of dids) {
|
||||
try {
|
||||
const { indexed, failed } = await backfillDid(did);
|
||||
log(`[backfill] ${did}: indexed=${indexed} failed=${failed}`);
|
||||
@@ -119,7 +117,7 @@ const main = async () => {
|
||||
}
|
||||
}
|
||||
log(`[backfill] done. indexed=${totalIndexed} failed=${totalFailed}`);
|
||||
db.close();
|
||||
closeDb();
|
||||
};
|
||||
|
||||
await main();
|
||||
|
||||
Reference in New Issue
Block a user