Files
hub-monorepo/packages/hub-nodejs/examples/replicate-data-postgres/index.ts
Shane da Silva 08354f4f19 Fix typos (#953)
2023-05-09 20:39:08 -07:00

58 lines
1.4 KiB
TypeScript

import { HubReplicator } from './hubReplicator';
import { getDbClient, migrateToLatest } from './db';
import { log } from './log';
/**
* Populate the following constants with your own values.
*
* If you're running this from the examples directory, make sure you follow the
* README.
*/
const HUB_HOST = process.env['HUB_HOST'] || 'nemes.farcaster.xyz:2283';
const HUB_SSL = (process.env['HUB_SSL'] || 'true') === 'true';
const POSTGRES_URL = process.env['POSTGRES_URL'] || 'postgres://app:password@localhost:6541/hub';
const db = getDbClient(POSTGRES_URL);
let replicator: HubReplicator | undefined;
const shutdown = async () => {
if (replicator) {
await replicator.stop();
await replicator.destroy();
}
if (db) {
await db.destroy();
}
};
process.on('exit', (code) => {
log.info(`Exiting process with status code ${code}`);
});
for (const signal of ['SIGTERM', 'SIGINT']) {
process.once(signal, (signalName: string) => {
log.info(`Process received ${signalName}`);
process.exitCode =
// eslint-disable-next-line security/detect-object-injection
{
SIGINT: 130,
SIGTERM: 143,
}[signalName] || 1;
shutdown();
});
}
(async () => {
// Create DB tables
const result = await migrateToLatest(db, log);
if (result.isErr()) {
process.exit(1);
}
replicator = new HubReplicator(HUB_HOST, HUB_SSL, db, log);
replicator.start();
})();