1
0
forked from Kieran/snort

move InMemoryDB to system

This commit is contained in:
Martti Malmi 2024-01-05 12:30:28 +02:00
parent 1a9e571b0f
commit 3eb290a594
6 changed files with 24 additions and 13 deletions

View File

@ -15,7 +15,6 @@ import { addEventToFuzzySearch } from "@/Db/FuzzySearch";
import IndexedDBWorker from "@/Db/IndexedDB?worker"; import IndexedDBWorker from "@/Db/IndexedDB?worker";
import { LoginStore } from "@/Utils/Login"; import { LoginStore } from "@/Utils/Login";
import { hasWasm, WasmOptimizer } from "@/Utils/wasm"; import { hasWasm, WasmOptimizer } from "@/Utils/wasm";
import inMemoryDB from "@/Cache/InMemoryDB"; // move to system or pass alreadyHave fn to system?
export const indexedDB = Comlink.wrap(new IndexedDBWorker()); export const indexedDB = Comlink.wrap(new IndexedDBWorker());
/** /**
@ -38,7 +37,6 @@ System.on("auth", async (c, r, cb) => {
}); });
System.on("event", (_, ev) => { System.on("event", (_, ev) => {
inMemoryDB.handleEvent(ev);
addEventToFuzzySearch(ev); addEventToFuzzySearch(ev);
socialGraphInstance.handleEvent(ev); socialGraphInstance.handleEvent(ev);
if (CONFIG.useIndexedDBEvents && socialGraphInstance.getFollowDistance(ev.pubkey) <= 2) { if (CONFIG.useIndexedDBEvents && socialGraphInstance.getFollowDistance(ev.pubkey) <= 2) {
@ -47,7 +45,6 @@ System.on("event", (_, ev) => {
}); });
System.on("request", (filter: ReqFilter) => { System.on("request", (filter: ReqFilter) => {
inMemoryDB.find(filter, e => System.HandleEvent(e));
if (CONFIG.useIndexedDBEvents) { if (CONFIG.useIndexedDBEvents) {
indexedDB.find( indexedDB.find(
filter, filter,

View File

@ -21,6 +21,7 @@
"@peculiar/webcrypto": "^1.4.3", "@peculiar/webcrypto": "^1.4.3",
"@types/debug": "^4.1.8", "@types/debug": "^4.1.8",
"@types/jest": "^29.5.1", "@types/jest": "^29.5.1",
"@types/lokijs": "^1.5.14",
"@types/node": "^20.5.9", "@types/node": "^20.5.9",
"@types/uuid": "^9.0.2", "@types/uuid": "^9.0.2",
"@types/ws": "^8.5.5", "@types/ws": "^8.5.5",
@ -39,6 +40,7 @@
"debug": "^4.3.4", "debug": "^4.3.4",
"eventemitter3": "^5.0.1", "eventemitter3": "^5.0.1",
"isomorphic-ws": "^5.0.0", "isomorphic-ws": "^5.0.0",
"lokijs": "^1.5.12",
"uuid": "^9.0.0", "uuid": "^9.0.0",
"ws": "^8.14.0" "ws": "^8.14.0"
} }

View File

@ -1,4 +1,4 @@
import { ID, ReqFilter as Filter, STR, TaggedNostrEvent, UID } from "@snort/system"; import { ID, ReqFilter as Filter, STR, TaggedNostrEvent, UID } from ".";
import loki from "lokijs"; import loki from "lokijs";
type PackedNostrEvent = { type PackedNostrEvent = {
@ -116,13 +116,6 @@ class InMemoryDB {
remove(eventId: string): void { remove(eventId: string): void {
const id = ID(eventId); const id = ID(eventId);
this.eventsCollection.findAndRemove({ id }); this.eventsCollection.findAndRemove({ id });
if (this.idb) {
try {
this.idb.events.where({ id: eventId }).delete();
} catch (e) {
console.error(e);
}
}
} }
removeOldest(): void { removeOldest(): void {

View File

@ -10,7 +10,7 @@ import { NostrEvent, ReqCommand, ReqFilter, TaggedNostrEvent, u256 } from "./nos
import { RelayInfo } from "./relay-info"; import { RelayInfo } from "./relay-info";
import EventKind from "./event-kind"; import EventKind from "./event-kind";
import { getHex64 } from "./utils"; import { getHex64 } from "./utils";
import inMemoryDB from "@snort/app/src/Cache/InMemoryDB"; import inMemoryDB from "./InMemoryDB";
/** /**
* Relay settings * Relay settings
@ -204,7 +204,7 @@ export class Connection extends EventEmitter<ConnectionEvents> {
// skip message processing if we've already seen it // skip message processing if we've already seen it
const msgId = getHex64(e.data as string, "id"); const msgId = getHex64(e.data as string, "id");
if (inMemoryDB.has(msgId)) { if (inMemoryDB.has(msgId)) {
console.log('already have'); console.log("already have");
return; return;
} }

View File

@ -26,6 +26,7 @@ import { RelayCache, RelayMetadataLoader } from "./outbox-model";
import { Optimizer, DefaultOptimizer } from "./query-optimizer"; import { Optimizer, DefaultOptimizer } from "./query-optimizer";
import { trimFilters } from "./request-trim"; import { trimFilters } from "./request-trim";
import { NostrConnectionPool } from "./nostr-connection-pool"; import { NostrConnectionPool } from "./nostr-connection-pool";
import inMemoryDB from "./InMemoryDB";
export interface NostrSystemEvents { export interface NostrSystemEvents {
change: (state: SystemSnapshot) => void; change: (state: SystemSnapshot) => void;
@ -167,6 +168,7 @@ export class NostrSystem extends EventEmitter<NostrSystemEvents> implements Syst
// internal handler for on-event // internal handler for on-event
this.on("event", (sub, ev) => { this.on("event", (sub, ev) => {
inMemoryDB.handleEvent(ev);
for (const [, v] of this.Queries) { for (const [, v] of this.Queries) {
v.handleEvent(sub, ev); v.handleEvent(sub, ev);
} }
@ -317,6 +319,7 @@ export class NostrSystem extends EventEmitter<NostrSystemEvents> implements Syst
qSend.filters = fNew; qSend.filters = fNew;
fNew.forEach(f => { fNew.forEach(f => {
inMemoryDB.find(f, e => this.emit("event", "*", e));
this.emit("request", f); this.emit("request", f);
}); });

View File

@ -3076,6 +3076,7 @@ __metadata:
"@stablelib/xchacha20": ^1.0.1 "@stablelib/xchacha20": ^1.0.1
"@types/debug": ^4.1.8 "@types/debug": ^4.1.8
"@types/jest": ^29.5.1 "@types/jest": ^29.5.1
"@types/lokijs": ^1.5.14
"@types/node": ^20.5.9 "@types/node": ^20.5.9
"@types/uuid": ^9.0.2 "@types/uuid": ^9.0.2
"@types/ws": ^8.5.5 "@types/ws": ^8.5.5
@ -3084,6 +3085,7 @@ __metadata:
isomorphic-ws: ^5.0.0 isomorphic-ws: ^5.0.0
jest: ^29.5.0 jest: ^29.5.0
jest-environment-jsdom: ^29.5.0 jest-environment-jsdom: ^29.5.0
lokijs: ^1.5.12
ts-jest: ^29.1.0 ts-jest: ^29.1.0
ts-node: ^10.9.1 ts-node: ^10.9.1
typescript: ^5.2.2 typescript: ^5.2.2
@ -3591,6 +3593,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@types/lokijs@npm:^1.5.14":
version: 1.5.14
resolution: "@types/lokijs@npm:1.5.14"
checksum: e5601952d19f5d6ace6e2b5d06771de0b4319bcb211f30f094c954e445b335a42e6e2de73561b837868f0b25a18e17333f1e7ff84b5523c0ef324c4650a549d6
languageName: node
linkType: hard
"@types/magnet-uri@npm:*": "@types/magnet-uri@npm:*":
version: 5.1.5 version: 5.1.5
resolution: "@types/magnet-uri@npm:5.1.5" resolution: "@types/magnet-uri@npm:5.1.5"
@ -8170,6 +8179,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"lokijs@npm:^1.5.12":
version: 1.5.12
resolution: "lokijs@npm:1.5.12"
checksum: 5cd45facb890048e83977de1451a7b70e1f9e4cfe41c40d2212dfc160df7919b821072f95b10d692f6932c1080193e0715e8fe18dee332f04da4fda0f08984b6
languageName: node
linkType: hard
"loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": "loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0":
version: 1.4.0 version: 1.4.0
resolution: "loose-envify@npm:1.4.0" resolution: "loose-envify@npm:1.4.0"