import * as config from '../config'; import * as nedb from 'nedb'; import * as fs from 'fs'; export const db = { analyticUnits: new nedb({ filename: config.ANALYTIC_UNITS_DATABASE_PATH, autoload: true }), metrics: new nedb({ filename: config.METRICS_DATABASE_PATH, autoload: true }), segments: new nedb({ filename: config.SEGMENTS_DATABASE_PATH, autoload: true }), files: new nedb({ filename: config.FILES_DATABASE_PATH, autoload: true }) }; let dbUpsertFile = (query: any, updateQuery: any) => { return new Promise((resolve, reject) => { db.files.update(query, updateQuery, { upsert: true }, (err: Error) => { if(err) { reject(err); } else { console.log('saved shit with query '); console.log(query); console.log('saved shit with updateQuery '); console.log(updateQuery); resolve(); } }); }); } let dbLoadFile = (query: any) => { return new Promise((resolve, reject) => { db.files.findOne(query, (err, doc) => { if(err) { reject(err); } else { console.log('got shit with query'); console.log(query); console.log('doc'); console.log(doc); resolve(doc); } }); }); } function maybeCreate(path: string): void { if(fs.existsSync(path)) { return; } console.log('mkdir: ' + path); fs.mkdirSync(path); console.log('exists: ' + fs.existsSync(path)); } export async function saveFile(filename: string, content: string): Promise { return dbUpsertFile({ filename } , { filename, content }); } export async function loadFile(filename: string): Promise { let doc = await dbLoadFile({ filename }); if(doc === null) { return null; } return doc.content; } export function checkDataFolders(): void { [ config.DATA_PATH, config.DATASETS_PATH, config.MODELS_PATH, config.METRICS_PATH, config.SEGMENTS_PATH, config.ZMQ_IPC_PATH ].forEach(maybeCreate); }