···11import { DIDS_TO_PROCESS, METRICS_PORT } from './constants.js';
22+import { startMetricsServer } from './metrics.js';
23import { gracefulShutdown, registerShutdownHandlers } from './shutdown.js';
34import { fetchAndDumpDidsPdses } from './stages/stage1.js';
45import { checkAllPDSHealth, selectAllDids } from './stages/stage2.js';
56import { processDidsAndFetchData } from './stages/stage3.js';
67import { DidAndPds } from './types.js';
77-import { startMetricsServer, stopMetricsServer } from './metrics.js';
8899async function main() {
1010 // Register graceful shutdown handlers
+10-14
src/metrics.ts
···11import { monitorPgPool } from '@christiangalsterer/node-postgres-prometheus-exporter';
22import express from 'express';
33+import { Server } from 'http';
34import { Gauge, Registry, collectDefaultMetrics } from 'prom-client';
4556import { pool } from './postgres.js';
66-import { Server } from 'http';
7788const register = new Registry();
99collectDefaultMetrics({ register });
···47474848export function stopMetricsServer(): Promise<void> {
4949 return new Promise((resolve, reject) => {
5050- if (metricsServer) {
5151- metricsServer.close((err) => {
5252- if (err) {
5353- console.error('Error shutting down metrics server:', err);
5454- reject(err);
5555- } else {
5656- console.log('Metrics server shut down successfully.');
5757- resolve();
5858- }
5959- });
6060- } else {
6161- resolve();
6262- }
5050+ metricsServer.close((err) => {
5151+ if (err) {
5252+ console.error('Error shutting down metrics server:', err);
5353+ reject(err);
5454+ } else {
5555+ console.log('Metrics server shut down successfully.');
5656+ resolve();
5757+ }
5858+ });
6359 });
6460}
+4-4
src/postgresBatchQueue.ts
···11// src/postgresBatchQueue.ts
22-32import { Mutex } from 'async-mutex';
44-import { db, closeDatabase } from './postgres.js';
33+44+import { BATCH_SIZE, BATCH_TIMEOUT_MS, MAX_FLUSH_RETRIES } from './constants.js';
55import { concurrentPostgresInserts } from './metrics.js';
66+import { closeDatabase, db } from './postgres.js';
67import { PostData } from './types.js';
77-import { BATCH_SIZE, BATCH_TIMEOUT_MS, MAX_FLUSH_RETRIES } from './constants.js';
8899export class PostgresBatchQueue {
1010 private queue: PostData[] = [];
···5050 */
5151 private scheduleFlush(): void {
5252 this.batchTimer = setTimeout(() => {
5353- this.flushQueue().catch((err) => {
5353+ this.flushQueue().catch((err: unknown) => {
5454 console.error(`Scheduled flush error: ${(err as Error).message}`);
5555 });
5656 }, this.batchTimeoutMs);
+3-5
src/schema.d.ts
···22 * This file was generated by kysely-codegen.
33 * Please do not edit it manually.
44 */
55-66-import type { ColumnType } from "kysely";
55+import type { ColumnType } from 'kysely';
7688-export type Generated<T> = T extends ColumnType<infer S, infer I, infer U>
99- ? ColumnType<S, I | undefined, U>
1010- : ColumnType<T, T | undefined, T>;
77+export type Generated<T> =
88+ T extends ColumnType<infer S, infer I, infer U> ? ColumnType<S, I | undefined, U> : ColumnType<T, T | undefined, T>;
1191210export type Int8 = ColumnType<string, bigint | number | string>;
1311