import fs from 'fs/promises'; import _ from 'lodash'; import Bunyan from 'bunyan'; import { PrismaClient } from '@prisma/client' import Promise from "bluebird"; import discogsService from './src/discogs'; import pgService from './src/pg'; import { logAxiosError } from './src/utils'; import createLog from './src/log'; import createApi from './src/api'; async function start(log) { const prisma = new PrismaClient(); const pg = pgService(log, prisma); const discogs = discogsService(log, pg); const api = createApi(log, pg, discogs); await api.listen(); } async function run() { const log = createLog(); process.on('SIGTERM', () => { log.debug('SIGTERM received, exiting'); process.exit(0); }); try { const r = await start(log) // log.info('done syncing', { totalListings: r.flat().length }); log.info(r); setTimeout(run, 60 * 1000); } catch (e) { if (e.message === 'rate limited') { log.info('rate limited, trying again in 60s'); return setTimeout(run, 60 * 1000); } log.error(e); process.exit(1); } } run();