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);
});
}