coddyger
Version:
Coddyger est une bibliothèque JavaScript/TypeScript qui fournit des fonctions communes et des plugins pour la gestion des données, la communication entre services, et des utilitaires avancés pour le développement d'applications.
221 lines (220 loc) • 7.89 kB
JavaScript
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.MongoDbDao = void 0;
const globals_1 = require("../../globals");
const services_1 = require("../../services");
class MongoDbDao {
logError(e, method) {
services_1.LoggerService.log({ type: services_1.LogLevel.Error, content: e, location: 'MongoDbDao', method });
return { error: true, data: e, message: globals_1.defines.message.tryCatch };
}
/* -----------------------------------
| ENREGISTRER UN DOCUMENT
----------------------------------- */
save(data) {
return __awaiter(this, void 0, void 0, function* () {
try {
const Q = new this.defaultModel(data);
const doc = yield Q.save();
return doc || Promise.reject(doc);
}
catch (e) {
return this.logError(e, 'save');
}
});
}
saveMany(data) {
return __awaiter(this, void 0, void 0, function* () {
try {
const doc = yield this.defaultModel.insertMany(data);
if (!doc)
throw doc;
return doc;
}
catch (e) {
return this.logError(e, 'saveMany');
}
});
}
update(params, data) {
return __awaiter(this, void 0, void 0, function* () {
try {
const doc = yield this.defaultModel.updateOne(params, data, { upsert: false });
return doc || Promise.reject(doc);
}
catch (e) {
return this.logError(e, 'update');
}
});
}
updateMany(params, data) {
return __awaiter(this, void 0, void 0, function* () {
try {
const doc = yield this.defaultModel.updateMany(params, data, { upsert: false });
return doc || Promise.reject(doc);
}
catch (e) {
return this.logError(e, 'updateMany');
}
});
}
/* -----------------------------------
| SELECTIONNE DES DOCUMENTS
----------------------------------- */
select(payloads) {
return __awaiter(this, void 0, void 0, function* () {
try {
let { page = 1, pageSize = 10, sort: sortBy, orderBy, params, excludes } = payloads;
page = Math.max(1, page);
const startIndex = (page - 1) * pageSize;
const model = this.defaultModel;
const sortObject = sortBy
? { [sortBy]: orderBy === 'desc' ? -1 : 1 }
: { createdAt: -1 };
const [rows, totalRows] = yield Promise.all([
model
.find(params, excludes)
.sort(sortObject)
.skip(startIndex)
.limit(pageSize)
.lean(),
model.countDocuments(params)
]);
if (!rows)
return Promise.reject({ rows, totalRows });
const totalPages = Math.ceil(totalRows / pageSize);
return {
rows,
totalRows,
totalPages,
countRowsPerPage: rows.length,
totalPagesPerQuery: totalPages
};
}
catch (e) {
return this.logError(JSON.stringify(e), 'select');
}
});
}
selectOne(params, fields) {
return __awaiter(this, void 0, void 0, function* () {
try {
const doc = yield this.defaultModel.findOne(params, fields).lean();
return doc || Promise.reject(doc);
}
catch (e) {
return this.logError(e, 'selectOne');
}
});
}
selectLatest(status) {
return __awaiter(this, void 0, void 0, function* () {
try {
let Q;
if (status) {
Q = yield this.defaultModel.findOne({ status }, '-__v', { sort: { createdAt: -1 } }).lean();
}
else {
Q = yield this.defaultModel.findOne().sort({ createdAt: -1 }).lean();
}
return Q;
}
catch (e) {
return e;
}
});
}
selectLatestWithParams() {
return __awaiter(this, arguments, void 0, function* (params = {}, excludeFields) {
try {
const doc = yield this.defaultModel
.findOne(params, excludeFields)
.sort({ createdAt: -1 })
.lean();
return doc;
}
catch (e) {
return this.logError(e, 'selectLatestWithParams');
}
});
}
count(params) {
return __awaiter(this, void 0, void 0, function* () {
try {
const doc = yield this.defaultModel.countDocuments(params);
return doc || Promise.reject(doc);
}
catch (e) {
return this.logError(e, 'count');
}
});
}
exist(params) {
return __awaiter(this, void 0, void 0, function* () {
try {
const doc = yield this.defaultModel.countDocuments(params);
return doc >= 1;
}
catch (e) {
return this.logError(e, 'exist');
}
});
}
aggregate(params) {
return __awaiter(this, void 0, void 0, function* () {
try {
const doc = yield this.defaultModel.aggregate(params);
return doc || Promise.reject(doc);
}
catch (e) {
return this.logError(e, 'aggregate');
}
});
}
selectHug(params) {
return __awaiter(this, void 0, void 0, function* () {
try {
const doc = yield this.defaultModel.find(params).lean();
return doc || Promise.reject(doc);
}
catch (e) {
return this.logError(e, 'selectHug');
}
});
}
/* -----------------------------------
| SUPPRIMER UN DOCUMENT
----------------------------------- */
remove(params) {
return __awaiter(this, void 0, void 0, function* () {
try {
const doc = yield this.defaultModel.deleteOne(params);
return doc || Promise.reject(doc);
}
catch (e) {
return this.logError(e, 'remove');
}
});
}
removeMany(params) {
return __awaiter(this, void 0, void 0, function* () {
try {
const doc = yield this.defaultModel.deleteMany(params);
return doc || Promise.reject(doc);
}
catch (e) {
return this.logError(e, 'removeMany');
}
});
}
}
exports.MongoDbDao = MongoDbDao;