[fabric/domain] Add Projection interface to handle model projection from events

This commit is contained in:
Pablo Baleztena 2024-10-15 15:16:10 -03:00
parent c9a061419c
commit 8c6f043f86

View File

@ -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<TModel extends Model, TEvents extends Event> {
model: TModel;
events: TEvents[VariantTag][];
projection: (
event: StoredEvent<TEvents>,
model?: ModelToType<TModel>,
) => ModelToType<TModel>;
}