UNPKG

topkat-utils

Version:

A comprehensive collection of TypeScript/JavaScript utility functions for common programming tasks. Includes validation, object manipulation, date handling, string formatting, and more. Zero dependencies, fully typed, and optimized for performance.

51 lines 1.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.mongoPush = exports.mongoFilterMerger = exports.getId = void 0; //---------------------------------------- // MONGO UTILS //---------------------------------------- const validation_utils_1 = require("./validation-utils"); const isset_1 = require("./isset"); /** @return undefined if cannot find _id */ function getId(obj) { if (!obj) return; // null case if (obj._id) return obj._id.toString(); else if ((0, validation_utils_1.isType)(obj, 'objectId')) return obj.toString(); else return; } exports.getId = getId; /** Merge filter with correct handling of OR and AND * @param {Object} filterA * @param {Object} filterB * @param {Boolean} assignToFilterA defualt false: if true, it will modify filterA, else it will return merged filters as a new object */ function mongoFilterMerger(filterA, filterB, assignToFilterA = false) { if ((0, isset_1.isset)(filterA.$and) && (0, isset_1.isset)(filterB.$and)) { filterA.$and.push(...filterB.$and); delete filterB.$and; } if ((0, isset_1.isset)(filterA.$or) && (0, isset_1.isset)(filterB.$or)) { if (!(0, isset_1.isset)(filterA.$and)) filterA.$and = []; filterA.$and.push({ $or: filterA.$or }, { $or: filterA.$or }); delete filterB.$or; } if (assignToFilterA) { Object.assign(filterA, filterB); return filterA; } else return { ...filterA, ...filterB }; } exports.mongoFilterMerger = mongoFilterMerger; function mongoPush(field, value, fields) { if (!(0, isset_1.isset)(fields.$push)) fields.$push = {}; fields.$push[field] = value; } exports.mongoPush = mongoPush; //# sourceMappingURL=mongo-utils.js.map