metis-desk/modules/companies/src/api/application/printer-configuration.repository.ts
2026-10-10 12:01:58 +02:00

29 lines
1.1 KiB
TypeScript

import type { UniqueID } from "@repo/rdx-ddd";
import type { Result } from "@repo/rdx-utils";
import type { PrinterConfiguration } from "../domain/printer-configuration.aggregate";
import type { PrinterConfigurationError } from "../domain/printer-configuration-values";
import type { WorkProfile } from "../domain/work-profile.aggregate";
export type PrinterContext = Readonly<{
configurations: readonly PrinterConfiguration[];
profiles: readonly WorkProfile[];
people: readonly { id: UniqueID; active: boolean }[];
assets: readonly { id: UniqueID; available: boolean }[];
actors: ReadonlyMap<string, string>;
}>;
export interface IPrinterConfigurationRepository {
remove(company: UniqueID, id: UniqueID): Promise<Result<void, PrinterConfigurationError>>;
get(company: UniqueID): Promise<Result<PrinterContext, PrinterConfigurationError>>;
save(
company: UniqueID,
action: (context: PrinterContext) => Result<PrinterConfiguration, PrinterConfigurationError>
): Promise<
Result<
{ configuration: PrinterConfiguration; context: PrinterContext },
PrinterConfigurationError
>
>;
}