type Error = SmithyError | NoSuchElementException | UnknownException;
const matchTags = Match.typeTags<Error>();
export const mapErrors = matchTags({
NoSuchElementException: (err) => new http.NotFound(err.message),
SmithyError: (err) => new http.BadGateway(err.cause.message),
UnknownException: (err) => new http.InternalServerError(err.message),
});
export const onSuccess = dual(
2,
<A, E extends Error>(
self: Effect.Effect<A, E>,
onSuccess: (t: A) => APIGatewayProxyStructuredResultV2,
) =>
self.pipe(
Effect.mapError(mapErrors),
Effect.match({
onSuccess,
onFailure: (err) =>
({
statusCode: err.statusCode,
body: err.message,
} as APIGatewayProxyStructuredResultV2),
}),
),
);
type Error = SmithyError | NoSuchElementException | UnknownException;
const matchTags = Match.typeTags<Error>();
export const mapErrors = matchTags({
NoSuchElementException: (err) => new http.NotFound(err.message),
SmithyError: (err) => new http.BadGateway(err.cause.message),
UnknownException: (err) => new http.InternalServerError(err.message),
});
export const onSuccess = dual(
2,
<A, E extends Error>(
self: Effect.Effect<A, E>,
onSuccess: (t: A) => APIGatewayProxyStructuredResultV2,
) =>
self.pipe(
Effect.mapError(mapErrors),
Effect.match({
onSuccess,
onFailure: (err) =>
({
statusCode: err.statusCode,
body: err.message,
} as APIGatewayProxyStructuredResultV2),
}),
),
);