UNPKG

@wbg-mde/repository

Version:

Managing all common method for file system CRUD operations.

355 lines (354 loc) 11.8 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; Object.defineProperty(exports, "__esModule", { value: true }); const path = require("path"); const nedb = require("nedb"); const _ = require("lodash"); const trace_decorator_1 = require("../decorators/trace.decorator"); const app_repo_constants_1 = require("../shared/app.repo.constants"); const model_1 = require("@wbg-mde/model"); let NeDBRepository = class NeDBRepository { find(type, entity, callback) { try { let db = this.getDB(type, entity); db.find({}, function (err, docs) { if (err) { callback({ result: 'error', messages: err }); } else { callback({ result: 'ok', data: docs }); } }); } catch (err) { callback({ result: 'error', messages: err }); console.log('Nedb Repository find Error >> ' + err.message); } } findByFilter(type, entity, filter, callback) { try { let defaultFilter = {}; if (filter != undefined) { defaultFilter = _.merge(defaultFilter, filter); } let db = this.getDB(type, entity); db.find(defaultFilter, function (err, docs) { if (err) { callback({ result: 'error', messages: err }); } else { callback({ result: 'ok', data: docs }); } }); } catch (err) { callback({ result: 'error', messages: err }); console.log('Nedb Repository find Error >> ' + err.message); } } findById(type, entity, id, callback) { try { let db = this.getDB(type, entity); db.findOne({ _id: id }, function (err, doc) { if (err) { callback({ result: 'error', messages: err }); } else { callback({ result: 'ok', data: doc }); } }); } catch (err) { callback({ result: 'error', messages: err }); console.log('Nedb Repository find by id Error >> ' + err.message); } } create(type, entity, data, callback) { try { let db = this.getDB(type, entity); db.insert(data, function (err, newDoc) { if (err) { callback({ result: 'error', messages: err }); } else { callback({ result: 'ok', data: newDoc }); } }); } catch (err) { callback({ result: 'error', messages: err }); console.log('Nedb Repository create Error >> ' + err); } } update(type, entity, query, data, callback) { try { let db = this.getDB(type, entity); db.update(query, data, { returnUpdatedDocs: true }, function (err, numReplaced, affectedDocuments) { if (err) { callback({ result: 'error', messages: err }); } else { callback({ result: 'ok', data: affectedDocuments }); } }); } catch (err) { callback({ result: 'error', messages: err }); console.log('Nedb Repository update Error >> ' + err); } } delete(type, entity, callback) { try { let db = this.getDB(type, entity); db.remove({}, { multi: true }, function (err, numRemoved) { if (err) { callback({ result: 'error', messages: err }); } else { callback({ result: 'ok', messages: numRemoved }); } }); } catch (err) { callback({ result: 'error', messages: err }); console.log('Nedb Repository delete Error >> ' + err); } } deleteById(type, entity, id, callback) { try { let db = this.getDB(type, entity); db.remove({ _id: id }, { multi: true }, function (err, numRemoved) { if (err) { callback({ result: 'error', messages: err }); } else { callback({ result: 'ok', messages: numRemoved }); } }); } catch (err) { callback({ result: 'error', messages: err }); console.log('File Repository Remove Error >> ' + err); } } deleteByStatus(type, entity, stat, callback) { try { let db = this.getDB(type, entity); db.remove({ status: stat }, { multi: true }, function (err, numRemoved) { if (err) { callback({ result: 'error', messages: err }); } else { callback({ result: 'ok', messages: numRemoved }); } }); } catch (err) { callback({ result: 'error', messages: err }); console.log('File Repository Remove Error >> ' + err); } } deleteByLanguage(dbfile, language, callback) { try { let db = new nedb({ filename: dbfile, autoload: true }); db.remove({ language: language }, { multi: true }, function (err, numRemoved) { if (err) { callback({ result: 'error', messages: err }); } else { callback({ result: 'ok', messages: numRemoved }); } }); } catch (err) { callback({ result: 'error', messages: err }); console.log('Custom Template Repository Remove Error >> ' + err); } } export(type, entity, callback) { try { let db = this.getDB(type, entity); db.find({}, function (err, docs) { if (err) { callback({ result: 'error', messages: err }); } else { callback({ result: 'ok', data: docs }); } }); } catch (err) { callback({ result: 'error', messages: err }); console.log('File Repository Export Error >> ' + err); } } findByName(type, entity, name, id, callback) { try { let db = this.getDB(type, entity); db.findOne({ name: name, _id: { $ne: id } }, function (err, doc) { if (err) { callback({ result: 'error', messages: err }); } else { callback({ result: 'ok', data: doc }); } }); } catch (err) { callback({ result: 'error', messages: err }); console.log('Nedb Repository find by name Error >> ' + err.message); } } getDB(type, entity) { let dbFile = ''; switch (entity) { case app_repo_constants_1.App_Repository_Constants.projectHeader.db_name: dbFile = path.join(model_1.configuration.userDataPath, app_repo_constants_1.App_Repository_Constants.userDataPaths.cur_user, app_repo_constants_1.App_Repository_Constants.projectHeader.base_folder, entity + '.db'); break; case app_repo_constants_1.App_Repository_Constants.metadataHeader.db_name: dbFile = path.join(model_1.configuration.userDataPath, app_repo_constants_1.App_Repository_Constants.userDataPaths.cur_user, app_repo_constants_1.App_Repository_Constants.projectHeader.base_folder, type, type + '.db'); break; case app_repo_constants_1.App_Repository_Constants.userDataPaths.template_db: dbFile = path.join(model_1.configuration.userDataPath, app_repo_constants_1.App_Repository_Constants.userDataPaths.cur_user, app_repo_constants_1.App_Repository_Constants.userDataPaths.template_path, app_repo_constants_1.App_Repository_Constants.userDataPaths.template_db + '.db'); break; } return new nedb({ filename: dbFile, autoload: true }); } }; NeDBRepository = __decorate([ trace_decorator_1.Trace({ params: { 'create': [1, 2], 'update': [1, 3] } }) ], NeDBRepository); exports.NeDBRepository = NeDBRepository;