/* eslint-disable no-await-in-loop */ // import fs from 'fs-extra'; import { spawn } from 'child_process'; import { Client } from '../class'; let interval: NodeJS.Timeout; export default async function storage(client: Client) { async function determineInterval(client0: Client) { const accounts = await client0.db.Account.countDocuments(); return (accounts * 2) * 60000; } let intervalTiming = await determineInterval(client); async function start() { const storageDaemon = spawn(`${__dirname}/../bin/storage`, [], { cwd: __dirname }); storageDaemon.stdout.on('data', (data) => client.signale.log(data.toString())); storageDaemon.stderr.on('data', (data) => client.signale.log(data.toString())); storageDaemon.on('exit', (code) => { client.signale.log(`CSD-GO-STR Daemon exited with code ${code}.`); storageDaemon.removeAllListeners(); client.signale.info(`Reactivating CSD-GO-STR daemon startup interval. Reactivating in ${intervalTiming / 60000}min.`); }); } /* let storageGo = spawn(`${__dirname}/../bin/storage`, [], { cwd: __dirname }); storageGo.stdout.on('data', (data) => client.signale.log(data.toString())); storageGo.stderr.on('data', (data) => client.signale.log(data.toString())); storageGo.on('exit', (code) => { client.signale.log(`Go storage func exited with code ${code}, restarting`); storageGo = spawn(`${__dirname}/../bin/storage`, [], { cwd: __dirname }); }); */ await start(); client.signale.info(`Activated CSD-GO-STR daemon startup interval. Starting in ${intervalTiming / 60000}min.`); interval = setInterval(async () => { intervalTiming = await determineInterval(client); await start(); }, intervalTiming); } export const clear = () => clearInterval(interval);