From e328a5b668e58050fbc2403e6b17d623afc13556 Mon Sep 17 00:00:00 2001 From: alexbcberio Date: Wed, 5 Jan 2022 22:34:28 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Move=20scheduled=20actions=20save?= =?UTF-8?q?=20path=20and=20create=20directory=20if=20it=20does=20not=20exi?= =?UTF-8?q?st?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 +- src/backend/helpers/scheduledActions.ts | 32 ++++++++++++++++--------- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/.gitignore b/.gitignore index 588773a..896bebf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ node_modules .env tokens.json -scheduled.json +storage/*.json *.log TODO.md diff --git a/src/backend/helpers/scheduledActions.ts b/src/backend/helpers/scheduledActions.ts index dd883c0..cf20c5b 100644 --- a/src/backend/helpers/scheduledActions.ts +++ b/src/backend/helpers/scheduledActions.ts @@ -2,18 +2,11 @@ import { promises as fs } from "fs"; import { handleClientAction } from "../chatClient"; import { resolve } from "path"; -export { - start, - scheduledActions, - checkScheduledActions, - saveScheduledActions -}; - const LOG_PREFIX = "[Scheduled] "; -const SCHEDULED_FILE = resolve(process.cwd(), "scheduled.json"); -const FIRST_CHECK_TIMEOUT = 1000 * 5; -const SAVE_TIMEOUT = 1000 * 30; -const CHECK_INTERVAL = 1000 * 60; +const SCHEDULED_FILE = resolve(process.cwd(), "./storage/scheduled.json"); +const FIRST_CHECK_TIMEOUT = 5e3; +const SAVE_TIMEOUT = 5e3; +const CHECK_INTERVAL = 60e3; const scheduledActions: Array = []; @@ -32,6 +25,9 @@ async function start(): Promise { savedActions = JSON.parse((await fs.readFile(SCHEDULED_FILE)).toString()); } catch (e) { // probably file does not exist + if (e instanceof Error) { + console.log(`${LOG_PREFIX}${e.message}`); + } } scheduledActions.push.apply(scheduledActions, savedActions); @@ -78,8 +74,22 @@ function saveScheduledActions(): void { } saveScheduledActionsTimeout = setTimeout(async () => { + const normalizedPath = SCHEDULED_FILE.replace(/\\/g, "/"); + + try { + await fs.stat(normalizedPath); + } catch (e) { + const dirs = normalizedPath.split("/"); + dirs.pop(); + await fs.mkdir(dirs.join("/")); + } + await fs.writeFile(SCHEDULED_FILE, JSON.stringify(scheduledActions)); console.log(`${LOG_PREFIX}Saved actions.`); saveScheduledActionsTimeout = null; }, SAVE_TIMEOUT); } + +saveScheduledActions(); + +export { start, scheduledActions, saveScheduledActions };