From 3febe6601cca5c9b64fdc52ccf74e8ca7d521ab7 Mon Sep 17 00:00:00 2001 From: Arthur Lu Date: Mon, 27 Feb 2023 01:28:01 +0000 Subject: [PATCH] add basic local db utility functions --- .gitignore | 3 ++- db.js | 46 ++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 44 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 9790e9b..2e965cb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ **/package-lock.json **/node_modules -**/vars.js \ No newline at end of file +**/vars.js +**/localdb.json \ No newline at end of file diff --git a/db.js b/db.js index 17f2776..b474c53 100644 --- a/db.js +++ b/db.js @@ -2,10 +2,19 @@ const fs = require("fs"); filename = "localdb.json"; +let db = {}; + /** * called at app startup, can be used to initialize any variables needed for database access */ -function init () {} +function init () { + try { + db = fs.readFileSync(filename); + } + catch { + fs.writeFileSync(filename, JSON.stringify(db)); + } +} /** * user requests additional resources specified in k-v pairs @@ -13,7 +22,14 @@ function init () {} * @param {Object} resources k-v pairs with resource name as keys and resource ammount as values * @returns {boolean} whether the user is approved to allocate requested resources */ -function requestResources (user, resources) {} +function requestResources (user, resources) { + Object.keys(resources).forEach((element) => { + if (db[user][element] < resources[element]) { + return false; + } + }); + return true; +} /** * user allocates additional resources specified in k-v pairs @@ -21,7 +37,18 @@ function requestResources (user, resources) {} * @param {Object} resources k-v pairs with resource name as keys and resource ammount as values * @returns {boolean} true if resources were successfully allocated, false otherwise */ -function allocateResources (user, resources) {} +function allocateResources (user, resources) { + Object.keys(resources).forEach((element) => { + db[user][element] -= resource[element]; + }); + try { + fs.writeFileSync(filename, db); + return true; + } + catch { + return false; + } +} /** * user releases allocated resources specified in k-v pairs @@ -29,6 +56,17 @@ function allocateResources (user, resources) {} * @param {Object} resources k-v pairs with resource name as keys and resource ammount as values * @returns {boolean} true if resources were successfully deallocated, false otherwise */ -function releaseResources (user, resources) {} +function releaseResources (user, resources) { + Object.keys(resources).forEach((element) => { + db[user][element] += resource[element]; + }); + try { + fs.writeFileSync(filename, db); + return true; + } + catch { + return false; + } +} module.exports = {init, requestResources, releaseResources}; \ No newline at end of file