add basic local db utility functions

This commit is contained in:
Arthur Lu 2023-02-27 01:28:01 +00:00
parent 3fe6994064
commit 3febe6601c
2 changed files with 44 additions and 5 deletions

1
.gitignore vendored
View File

@ -1,3 +1,4 @@
**/package-lock.json
**/node_modules
**/vars.js
**/localdb.json

46
db.js
View File

@ -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};