event-local
Version:
Event client
81 lines (76 loc) • 1.91 kB
text/typescript
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
})
];
}
}
}