UNPKG

corifeus-utils

Version:
60 lines (51 loc) 1.52 kB
const coryFs = require('../fs'); const mz = require('mz'); const load = async (dbFile, data = {}) => { const exists = await coryFs.ensureFile(dbFile, data) if (exists) { data = await mz.fs.readFile(dbFile); } data = JSON.parse(data.toString()); return new db(dbFile, data); } const db = function (dbFile, data) { const getTime = () => { return Date.now(); } if (!data.hasOwnProperty('_createdAt')) { data._createdAt = getTime(); data._updatedAt = getTime(); } Object.defineProperty(this, 'raw', { get: () => { return data; } }) this.exists = function (entity, key) { if (!data.hasOwnProperty(entity)) { return false; } if (!data[entity].hasOwnProperty(key)) { return false; } return true; } this.save = function (entity, key, saveData) { if (!data.hasOwnProperty(entity)) { data[entity] = {}; } if (data[entity].hasOwnProperty(key)) { saveData._updatedAt = getTime(); data[entity][key] = Object.assign(data[entity][key], saveData); } else { saveData._createdAt = getTime(); saveData._updatedAt = getTime(); data[entity][key] = saveData; } } this.write = async function () { data._updatedAt = getTime(); await mz.fs.writeFile(dbFile, JSON.stringify(data, null, 4)); } } module.exports.load = load;