UNPKG

event-local

Version:

Event client

81 lines (76 loc) 1.91 kB
import { ReflectionMutableCommandProccessingAggregate } from "../ReflectionMutableCommandProccessingAggregate"; import TestCommand, { CreateTest, RenameTest, ChangeStatusTest } from "./TestCommand"; import { TestCreated, TestRenamed, TestEvent, TestStatusChanged } from "./TestCreated"; export interface TestDetail { id: string; name: string; } export class Test implements ReflectionMutableCommandProccessingAggregate { private id: string; private name: string; private status: number = 0; constructor() {} getID() { return this.id; } getName() { return this.name; } apply(event: TestEvent): void { console.log(event); switch (event.event_type) { case "TestCreated": this.id = event.entity_id; this.name = event.event_data.name; return; case "TestRenamed": this.name = event.event_data; break; case "TestStatusChanged": this.status = event.event_data; break; } } process(command: TestCommand): TestEvent[] { if (command instanceof CreateTest) { command.entity.id = command.entity_id; return [ new TestCreated({ event_data: command.entity, entity_type: this.constructor.name, entity_id: command.entity_id, triggering_event: null }) ]; } if (command instanceof RenameTest) { return [ new TestRenamed({ event_data: command.entity, entity_type: this.constructor.name, entity_id: command.entity_id, triggering_event: null }) ]; } if (command instanceof ChangeStatusTest) { return [ new TestStatusChanged({ event_data: command.entity, entity_type: this.constructor.name, entity_id: command.entity_id, triggering_event: null }) ]; } } }