forked from engineering/cloudservices
41 lines
1.7 KiB
TypeScript
41 lines
1.7 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) {
|
|
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);
|