mirror of
https://gitlab.com/soapbox-pub/ditto.git
synced 2025-12-06 11:29:46 +00:00
Merge branch 'import-script' into 'main'
Improve performance of import script See merge request soapbox-pub/ditto!454
This commit is contained in:
commit
e789e08c0f
2 changed files with 24 additions and 4 deletions
|
|
@ -1,10 +1,13 @@
|
|||
import { Semaphore } from '@lambdalisue/async';
|
||||
import { NostrEvent } from '@nostrify/nostrify';
|
||||
import { JsonParseStream } from '@std/json/json-parse-stream';
|
||||
import { TextLineStream } from '@std/streams/text-line-stream';
|
||||
|
||||
import { Conf } from '@/config.ts';
|
||||
import { Storages } from '@/storages.ts';
|
||||
|
||||
const store = await Storages.db();
|
||||
const sem = new Semaphore(Conf.pg.poolSize);
|
||||
|
||||
console.warn('Importing events...');
|
||||
|
||||
|
|
@ -15,9 +18,26 @@ const readable = Deno.stdin.readable
|
|||
.pipeThrough(new TextLineStream())
|
||||
.pipeThrough(new JsonParseStream());
|
||||
|
||||
for await (const event of readable) {
|
||||
await store.event(event as unknown as NostrEvent);
|
||||
for await (const line of readable) {
|
||||
const event = line as unknown as NostrEvent;
|
||||
|
||||
while (sem.locked) {
|
||||
await new Promise((resolve) => setTimeout(resolve, 0));
|
||||
}
|
||||
|
||||
sem.lock(async () => {
|
||||
try {
|
||||
await store.event(event);
|
||||
console.warn(`(${count}) Event<${event.kind}> ${event.id}`);
|
||||
} catch (error) {
|
||||
if (error.message.includes('violates unique constraint')) {
|
||||
console.warn(`(${count}) Skipping existing event... ${event.id}`);
|
||||
} else {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
count++;
|
||||
});
|
||||
}
|
||||
|
||||
console.warn(`Imported ${count} events`);
|
||||
|
|
|
|||
|
|
@ -235,7 +235,7 @@ class Conf {
|
|||
static pg = {
|
||||
/** Number of connections to use in the pool. */
|
||||
get poolSize(): number {
|
||||
return Number(Deno.env.get('PG_POOL_SIZE') ?? 10);
|
||||
return Number(Deno.env.get('PG_POOL_SIZE') ?? 20);
|
||||
},
|
||||
};
|
||||
/** Whether to enable requesting events from known relays. */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue