UNPKG

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
"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;