29 lines
1.1 KiB
TypeScript
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
|
|
>
|
|
>;
|
|
}
|