move InMemoryDB to system
This commit is contained in:
parent
1a9e571b0f
commit
3eb290a594
@ -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,
|
||||||
|
@ -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"
|
||||||
}
|
}
|
||||||
|
@ -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 {
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
16
yarn.lock
16
yarn.lock
@ -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"
|
||||||
|
Loading…
Reference in New Issue
Block a user