import { type DomainError, type DomainEvent, editPlayerCharacter, isDomainError, type PlayerCharacterId, } from "@initiative/domain"; import type { PlayerCharacterStore } from "./ports.js"; interface EditFields { readonly name?: string; readonly ac?: number; readonly maxHp?: number; readonly color?: string | null; readonly icon?: string | null; } export function editPlayerCharacterUseCase( store: PlayerCharacterStore, id: PlayerCharacterId, fields: EditFields, ): DomainEvent[] | DomainError { const characters = store.getAll(); const result = editPlayerCharacter(characters, id, fields); if (isDomainError(result)) { return result; } store.save([...result.characters]); return result.events; }