UNPKG

adonis-odm

Version:

A comprehensive MongoDB ODM for AdonisJS with Lucid-style API, type-safe relationships, embedded documents, and transaction support

35 lines (34 loc) 1.55 kB
/** * Create a hook decorator for a specific hook type */ function createHookDecorator(hookType) { return function (target, propertyKey, _descriptor) { // target is the static side of the class (the constructor function) const modelClass = target; const metadata = modelClass.getMetadata(); if (!metadata.hooks) { metadata.hooks = new Map(); } const hooksForType = metadata.hooks.get(hookType) || []; if (!hooksForType.includes(propertyKey)) { // Avoid duplicate registration hooksForType.push(propertyKey); } metadata.hooks.set(hookType, hooksForType); }; } /** * Hook decorators for model lifecycle events */ export const beforeSave = () => createHookDecorator('beforeSave'); export const afterSave = () => createHookDecorator('afterSave'); export const beforeCreate = () => createHookDecorator('beforeCreate'); export const afterCreate = () => createHookDecorator('afterCreate'); export const beforeUpdate = () => createHookDecorator('beforeUpdate'); export const afterUpdate = () => createHookDecorator('afterUpdate'); export const beforeDelete = () => createHookDecorator('beforeDelete'); export const afterDelete = () => createHookDecorator('afterDelete'); export const beforeFind = () => createHookDecorator('beforeFind'); export const afterFind = () => createHookDecorator('afterFind'); export const beforeFetch = () => createHookDecorator('beforeFetch'); export const afterFetch = () => createHookDecorator('afterFetch');