chore: move sqlite files
fix: debug print for deletes
This commit is contained in:
5
packages/worker-relay/src/sqlite/fixers.ts
Normal file
5
packages/worker-relay/src/sqlite/fixers.ts
Normal file
@ -0,0 +1,5 @@
|
||||
import { SqliteRelay } from "./sqlite-relay";
|
||||
|
||||
export async function runFixers(relay: SqliteRelay) {
|
||||
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
import { NostrEvent } from "./types";
|
||||
import { NostrEvent } from "../types";
|
||||
import { SqliteRelay } from "./sqlite-relay";
|
||||
import { debugLog } from "./debug";
|
||||
import { debugLog } from "../debug";
|
||||
|
||||
const log = (msg: string, ...args: Array<any>) => debugLog("SqliteRelay:migrations", msg, ...args);
|
||||
|
@ -1,11 +1,12 @@
|
||||
import sqlite3InitModule, { Database, Sqlite3Static } from "@sqlite.org/sqlite-wasm";
|
||||
import { EventEmitter } from "eventemitter3";
|
||||
import { EventMetadata, NostrEvent, RelayHandler, RelayHandlerEvents, ReqFilter, unixNowMs } from "./types";
|
||||
import { EventMetadata, NostrEvent, RelayHandler, RelayHandlerEvents, ReqFilter, unixNowMs } from "../types";
|
||||
import migrate from "./migrations";
|
||||
import { debugLog } from "./debug";
|
||||
import { debugLog } from "../debug";
|
||||
|
||||
// import wasm file directly, this needs to be copied from https://sqlite.org/download.html
|
||||
import SqlitePath from "./sqlite3.wasm?url";
|
||||
import { runFixers } from "./fixers";
|
||||
|
||||
export class SqliteRelay extends EventEmitter<RelayHandlerEvents> implements RelayHandler {
|
||||
#sqlite?: Sqlite3Static;
|
||||
@ -30,7 +31,11 @@ export class SqliteRelay extends EventEmitter<RelayHandlerEvents> implements Rel
|
||||
});
|
||||
this.#log(`Got SQLite version: ${this.#sqlite.version.libVersion}`);
|
||||
await this.#open(path);
|
||||
this.db && migrate(this);
|
||||
if (this.db) {
|
||||
await migrate(this);
|
||||
// dont await to avoid timeout
|
||||
runFixers(this);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -103,10 +108,11 @@ export class SqliteRelay extends EventEmitter<RelayHandlerEvents> implements Rel
|
||||
db.exec(`delete from events where id in (${this.#repeatParams(ids.length)})`, {
|
||||
bind: ids,
|
||||
});
|
||||
const deleted = db.changes();
|
||||
db.exec(`delete from search_content where id in (${this.#repeatParams(ids.length)})`, {
|
||||
bind: ids,
|
||||
});
|
||||
this.#log("Deleted", ids, db.changes());
|
||||
this.#log("Deleted", ids, deleted);
|
||||
}
|
||||
|
||||
#insertEvent(db: Database, ev: NostrEvent) {
|
||||
@ -154,17 +160,19 @@ export class SqliteRelay extends EventEmitter<RelayHandlerEvents> implements Rel
|
||||
db.exec("insert or ignore into events(id, pubkey, created, kind, json) values(?,?,?,?,?)", {
|
||||
bind: [ev.id, ev.pubkey, ev.created_at, ev.kind, JSON.stringify(ev)],
|
||||
});
|
||||
let eventInserted = (this.db?.changes() as number) > 0;
|
||||
if (eventInserted) {
|
||||
const insertedEvents = db.changes();
|
||||
if (insertedEvents > 0) {
|
||||
for (const t of ev.tags.filter(a => a[0].length === 1)) {
|
||||
db.exec("insert into tags(event_id, key, value) values(?, ?, ?)", {
|
||||
bind: [ev.id, t[0], t[1]],
|
||||
});
|
||||
}
|
||||
this.insertIntoSearchIndex(db, ev);
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
this.#seenInserts.add(ev.id);
|
||||
return eventInserted;
|
||||
return insertedEvents;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -379,4 +387,8 @@ export class SqliteRelay extends EventEmitter<RelayHandlerEvents> implements Rel
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
#fixMissingTags(db: Database) {
|
||||
|
||||
}
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
/// <reference lib="webworker" />
|
||||
|
||||
import { SqliteRelay } from "./sqlite-relay";
|
||||
import { SqliteRelay } from "./sqlite/sqlite-relay";
|
||||
import { InMemoryRelay } from "./memory-relay";
|
||||
import { setLogging } from "./debug";
|
||||
import { WorkQueueItem, barrierQueue, processWorkQueue } from "./queue";
|
||||
|
Reference in New Issue
Block a user