export function registerReadLayoutRoutes()

in apps/newsletters-api/src/app/routes/layouts.ts [15:48]


export function registerReadLayoutRoutes(app: FastifyInstance) {
	app.get('/api/layouts', async (req, res) => {
		const storageResponse = await layoutStore.readAll();
		if (!storageResponse.ok) {
			return res
				.status(mapStorageFailureReasonToStatusCode(storageResponse.reason))
				.send(makeErrorResponse(storageResponse.message));
		}
		return makeSuccessResponse(storageResponse.data);
	});

	app.get<{
		Params: { editionId: string };
	}>('/api/layouts/:editionId', async (req, res) => {
		const { editionId } = req.params;

		const idParseResult = editionIdSchema.safeParse(editionId.toUpperCase());

		if (!idParseResult.success) {
			return res
				.status(400)
				.send(makeErrorResponse(`No such edition ${editionId}`));
		}

		const storageResponse = await layoutStore.read(idParseResult.data);

		if (!storageResponse.ok) {
			return res
				.status(mapStorageFailureReasonToStatusCode(storageResponse.reason))
				.send(makeErrorResponse(storageResponse.message));
		}
		return makeSuccessResponse(storageResponse.data);
	});
}