UNPKG

event-driven

Version:

makes building event-driven-architecture easy

37 lines (31 loc) 867 B
import { Schema, Document, Types, model } from 'mongoose' export interface EventDoc extends Document { _id: Types.ObjectId parentIds: Types.ObjectId[] durableName?: string clientGroup: string subject: string data: any republish: { targetClientGroup: string createdAt: Date }[] createdAt: Date } const EventSchema = new Schema({}, { strict: false }) export const Event = model<EventDoc>('Event', EventSchema) export interface Event<Subjects> { subject: Subjects data: any } export const createEvent = <PublishingEvent extends Event<string>>(data: { parentIds: Types.ObjectId[] durableName?: string clientGroup: string subject: PublishingEvent['subject'] data: PublishingEvent['data'] }) => { const event = new Event({ ...data, republish: [], createdAt: new Date() }) // event.save().catch(console.log) return event }