UNPKG

strapi-pfapi

Version:

a strapi plugin library uses local and redis caches to achieve single digit milliseconds on average api response time.

62 lines (58 loc) 1.93 kB
'use strict'; const debug_verbose = require('debug')('pfapi-verbose:lifecycles'); const logging = require('./logging'); const uids_config = require('./uids-config'); module.exports = (app, uid) => { const result = { models: [uid], afterCreate(event) { debug_verbose(uid, logging.cmsg(event)); app.after_upsert(event); }, afterUpdate(event) { debug_verbose(uid, logging.cmsg(event)); app.after_upsert(event); }, afterDelete(event) { debug_verbose(uid, logging.cmsg(event)); app.after_delete(event); }, async beforeDeleteMany(event) { debug_verbose(uid, logging.cmsg(event)); await before_delete_many(uid, event); }, afterDeleteMany(event) { debug_verbose(uid, logging.cmsg(event)); if (event.params.deleted_items && event.result.count > 0) { app.after_delete(event); } } }; if (uid === uids_config.files_uid) { delete result.afterCreate; } if (uid === uids_config.handle_uid) { result.beforeFindOne = (event) => { //debug_verbose(uid, logging.cmsg(event)); update_component_media_populate(event); } result.beforeFindMany = (event) => { //debug_verbose(uid, logging.cmsg(event)); update_component_media_populate(event); } } return result; } function update_component_media_populate(event) { if (event.params && event.params.populate) { event.params.populate = { attributes: { populate: { media: true } } }; } } async function before_delete_many(uid, event) { if (event.params) { const items = await strapi.db.query(uid).findMany(event.params); if (items && items.length > 0) { event.params.deleted_items = items; } } }