Implement the 003-remove-combatant feature that adds the possibility to remove a combatant from an encounter

This commit is contained in:
Lukas
2026-03-03 23:46:47 +01:00
parent 9d7b174867
commit aed234de7b
16 changed files with 763 additions and 6 deletions

View File

@@ -1,3 +1,4 @@
export { addCombatantUseCase } from "./add-combatant-use-case.js";
export { advanceTurnUseCase } from "./advance-turn-use-case.js";
export type { EncounterStore } from "./ports.js";
export { removeCombatantUseCase } from "./remove-combatant-use-case.js";

View File

@@ -0,0 +1,23 @@
import {
type CombatantId,
type DomainError,
type DomainEvent,
isDomainError,
removeCombatant,
} from "@initiative/domain";
import type { EncounterStore } from "./ports.js";
export function removeCombatantUseCase(
store: EncounterStore,
id: CombatantId,
): DomainEvent[] | DomainError {
const encounter = store.get();
const result = removeCombatant(encounter, id);
if (isDomainError(result)) {
return result;
}
store.save(result.encounter);
return result.events;
}