@wbg-mde/repository
Version:
Managing all common method for file system CRUD operations.
355 lines (354 loc) • 11.8 kB
JavaScript
;
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;