1
0
Fork 0
cloudservices/src/intervals/storage.ts

43 lines
1.8 KiB
TypeScript

/* 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) {
return;
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.`);
storageDaemon.kill();
});
}
/* 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);