UNPKG

4.72 kBSource Map (JSON)View Raw
1{"version":3,"file":"index.m.js","sources":["../src/index.js"],"sourcesContent":["import mongooseHidden from \"mongoose-hidden\";\n\nexport function helper(schema, options) {\n // soft delete\n schema.add({ deleted: { type: Boolean, default: false, index: true } });\n schema.add({ deletedAt: { type: Date } });\n\n schema.loadClass(Base);\n\n // hidden _id in toJSON and toObject\n schema.plugin(mongooseHidden(), {\n hidden: { _id: true, deleted: true },\n });\n}\n\nexport const defaultOptions = {\n timestamps: { createdAt: \"createAt\", updatedAt: \"updateAt\" },\n toJSON: {\n virtuals: true,\n },\n toObject: {\n virtuals: true,\n },\n};\n\nclass Base {\n /**\n * Get by id\n * @param {string} id - The objectId of model.\n * @param {string?} populate - The objectId of model.\n * @returns {Promise<this>}\n */\n static get(id, populate = \"\") {\n return this.findById(id)\n .populate(populate)\n .exec();\n }\n\n /**\n * Soft delete document by id\n * @param id id of document\n * @returns {Promise<this>}\n */\n static softDelete(id) {\n return this.findByIdAndUpdate(\n id,\n { deletedAt: new Date(), deleted: true },\n { new: true }\n ).exec();\n }\n\n /**\n * Update or create object with given id\n * @param {*} id id of doc\n * @param {*} update body tobe updated\n * @returns {Promise<this>}\n */\n static upsert(id, update) {\n return this.findByIdAndUpdate(id, update, {\n new: true,\n upsert: true,\n setDefaultsOnInsert: true,\n }).exec();\n }\n\n /**\n * List documents\n * @param {Object} [conditions] - query condition.\n * @param {object} [conditions.filter] - mongo query.\n * @param {number} [conditions.lean] - return pure json.\n * @param {number} [conditions.limit] - limit number of docs to be returned.\n * @param {number} [conditions.offset] - number of docs to be skipped.\n * @param {string} [conditions.populate] - populate some reference fields.\n * @param {string} [conditions.select] - select fileds.\n * @param {string} [conditions.sort] - sort by.\n * @returns {Promise<Array<this>>}\n */\n static list({\n filter = {},\n lean = false,\n limit = 100,\n offset = 0,\n populate = \"\",\n select,\n sort = \"-updateAt\",\n //TODO: support grouup\n } = {}) {\n // default query not deleted docs\n if (!filter.deleted) filter.deleted = false;\n return this.find(filter)\n .sort(sort)\n .skip(Number(offset))\n .limit(Number(limit))\n .populate(populate)\n .select(select)\n .lean(lean)\n .exec();\n }\n\n /**\n * Count documents.\n * @param {object} filter - mongo query.\n * @returns {Promise<number>}\n */\n static count(filter = {}) {\n if (!filter.deleted) filter.deleted = false;\n return this.countDocuments(filter).exec();\n }\n\n /**\n * Soft delete.\n *\n * @returns {Promise<this>}\n */\n softDelete() {\n return this.set({\n deletedAt: new Date(),\n deleted: true,\n }).save();\n }\n\n /**\n * Get document back after soft removed.\n *\n * @returns {Promise<this>}\n */\n restore() {\n return this.set({\n deletedAt: undefined,\n deleted: undefined,\n }).save();\n }\n}\n"],"names":["helper","schema","options","add","deleted","type","Boolean","default","index","deletedAt","Date","loadClass","Base","plugin","mongooseHidden","hidden","_id","defaultOptions","timestamps","createdAt","updatedAt","toJSON","virtuals","toObject","get","id","populate","this","findById","exec","softDelete","findByIdAndUpdate","upsert","update","list","ref","filter","find","sort","skip","Number","offset","limit","select","lean","count","countDocuments","set","save","restore","undefined"],"mappings":"+BAEO,SAASA,EAAOC,EAAQC,GAE7BD,EAAOE,IAAI,CAAEC,QAAS,CAAEC,KAAMC,QAASC,SAAS,EAAOC,OAAO,KAC9DP,EAAOE,IAAI,CAAEM,UAAW,CAAEJ,KAAMK,QAEhCT,EAAOU,UAAUC,GAGjBX,EAAOY,OAAOC,IAAkB,CAC9BC,OAAQ,CAAEC,KAAK,EAAMZ,SAAS,KAIlC,IAAaa,EAAiB,CAC5BC,WAAY,CAAEC,UAAW,WAAYC,UAAW,YAChDC,OAAQ,CACNC,UAAU,GAEZC,SAAU,CACRD,UAAU,IAIRV,iBAOGY,aAAIC,EAAIC,yBAAW,IACjBC,KAAKC,SAASH,GAClBC,SAASA,GACTG,UAQEC,oBAAWL,UACTE,KAAKI,kBACVN,EACA,CAAEhB,UAAW,IAAIC,cAAiB,GAClC,MAAO,IACPmB,UASGG,gBAAOP,EAAIQ,UACTN,KAAKI,kBAAkBN,EAAIQ,EAAQ,MACnC,UACG,uBACa,IACpBJ,UAeEK,cAAKC,kBASR,kCARO,iCACF,gCACC,mCACC,mCACE,kDAEJ,aAIFC,EAAOhC,UAASgC,EAAOhC,SAAU,GAC/BuB,KAAKU,KAAKD,GACdE,KAAKA,GACLC,KAAKC,OAAOC,IACZC,MAAMF,OAAOE,IACbhB,SAASA,GACTiB,OAAOA,GACPC,KAAKA,GACLf,UAQEgB,eAAMT,yBAAS,IACfA,EAAOhC,UAASgC,EAAOhC,SAAU,GAC/BuB,KAAKmB,eAAeV,GAAQP,QAQrCC,YAAAA,6BACSH,KAAKoB,IAAI,CACdtC,UAAW,IAAIC,cACN,IACRsC,QAQLC,YAAAA,0BACStB,KAAKoB,IAAI,gBACHG,eACFA,IACRF"}
\No newline at end of file