You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

76 lines
2.0 KiB

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<void>((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<any>((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<void> {
return dbUpsertFile({ filename } , { filename, content });
}
export async function loadFile(filename: string): Promise<string> {
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);
}