diff options
author | eug-vs <eug-vs@keemail.me> | 2020-12-04 01:12:54 +0300 |
---|---|---|
committer | eug-vs <eug-vs@keemail.me> | 2020-12-04 01:14:12 +0300 |
commit | 569cb0457b4cdcffdf325bdfe8959d55e48efc25 (patch) | |
tree | edc092e392ef9ec619964a917017a9d40ad6f659 /lib/event.model.ts | |
parent | d513b23be26bda40d40ec43258345af6e34cfdfd (diff) | |
download | mongo-cronjob-569cb0457b4cdcffdf325bdfe8959d55e48efc25.tar.gz |
feat!: remove context schema from client
This will allow for multiple event types in one Model.
Diffstat (limited to 'lib/event.model.ts')
-rw-r--r-- | lib/event.model.ts | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/lib/event.model.ts b/lib/event.model.ts index bea533d..665a35f 100644 --- a/lib/event.model.ts +++ b/lib/event.model.ts @@ -1,11 +1,11 @@ import { model, Schema, Model } from 'mongoose'; import cron from 'cron'; -import createEventSchema, { EventDocument } from './event.schema'; +import schema, { EventDocument } from './event.schema'; import { LogDocument } from './log.schema'; import { LogModel } from './log.model'; import Connection from './connection'; -export interface Event<Context> extends EventDocument<Context> { +export interface Event<Context = any> extends EventDocument<Context> { log(message: string): Promise<LogDocument>; start(): void; complete(): void; @@ -14,15 +14,14 @@ export interface Event<Context> extends EventDocument<Context> { getLogs(): Promise<LogDocument[]>; } -export interface EventModel<Context> extends Model<Event<Context>> { +export interface EventModel<Context = any> extends Model<Event<Context>> { findNextEvents(): Event<Context>[]; findMissedEvents(): Event<Context>[]; } const { CronJob } = cron; -const createEventModel = <Context>(connection: Connection, contextSchema: Schema): EventModel<Context> => { - const schema = createEventSchema(contextSchema); +const createEventModel = (connection: Connection): EventModel => { const LogModel: LogModel = connection.models['Log']; // Schema methods @@ -91,11 +90,11 @@ const createEventModel = <Context>(connection: Connection, contextSchema: Schema }); // Hooks - schema.pre<Event<Context>>('save', async function () { + schema.pre<Event>('save', async function () { this.nextRunAt = this.computeNextRunAt(); }); - return connection.model<Event<Context>, EventModel<Context>>('Event', schema); + return connection.model<Event, EventModel>('Event', schema); }; |