|
@@ -135,6 +135,28 @@ export class DataModule extends BaseModule {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * registerEvents - Register events for schema with event module
|
|
|
+ */
|
|
|
+ private async _registerEventListeners<
|
|
|
+ ModelName extends keyof Models,
|
|
|
+ SchemaType extends Schemas[keyof ModelName]
|
|
|
+ >(schema: SchemaType) {
|
|
|
+ const eventListeners = schema.get("eventListeners");
|
|
|
+
|
|
|
+ if (
|
|
|
+ typeof eventListeners !== "object" ||
|
|
|
+ Object.keys(eventListeners).length === 0
|
|
|
+ )
|
|
|
+ return;
|
|
|
+
|
|
|
+ await Promise.all(
|
|
|
+ Object.entries(eventListeners).map(async ([event, callback]) =>
|
|
|
+ EventsModule.subscribe("event", event, callback)
|
|
|
+ )
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* loadModel - Import and load model schema
|
|
|
*
|
|
@@ -174,6 +196,8 @@ export class DataModule extends BaseModule {
|
|
|
|
|
|
await this._registerEvents(modelName, schema);
|
|
|
|
|
|
+ await this._registerEventListeners(schema);
|
|
|
+
|
|
|
schema.set("toObject", { getters: true, virtuals: true });
|
|
|
schema.set("toJSON", { getters: true, virtuals: true });
|
|
|
|