Skip to content
ts
import { C, E, promiseObject } from "@duplojs/utils";
import { BookPort, ClientPort } from "@applications/ports";
import { clientGiveBackBook, type clientHaveBook } from "@domains/aggregates";

export const ClientGiveBackBookUseCase = C.createUseCase(
	{
		BookPort,
		ClientPort,
	},
	({
		bookPort,
		clientPort,
	}) => (
		input: C.GetEvidenceResult<
			typeof clientHaveBook,
			"client-with-book"
		>,
	) => E.rightPipe(
		clientGiveBackBook(input),
		({ book, client }) => promiseObject({
			client: clientPort.save(client),
			book: bookPort.save(book),
		}),
	),
);

Released under the MIT License.