From 8c6f043f865b9894e545d9e79a7c5294b3397e99 Mon Sep 17 00:00:00 2001 From: Pablo Baleztena Date: Tue, 15 Oct 2024 15:16:10 -0300 Subject: [PATCH] [fabric/domain] Add Projection interface to handle model projection from events --- .../fabric/domain/src/projections/projection.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 packages/fabric/domain/src/projections/projection.ts diff --git a/packages/fabric/domain/src/projections/projection.ts b/packages/fabric/domain/src/projections/projection.ts new file mode 100644 index 0000000..801b963 --- /dev/null +++ b/packages/fabric/domain/src/projections/projection.ts @@ -0,0 +1,13 @@ +import { VariantTag } from "@fabric/core"; +import { Event } from "../events/event.js"; +import { StoredEvent } from "../events/stored-event.js"; +import { Model, ModelToType } from "../models/model.js"; + +export interface Projection { + model: TModel; + events: TEvents[VariantTag][]; + projection: ( + event: StoredEvent, + model?: ModelToType, + ) => ModelToType; +}