const program = (data: unknown) =>
Effect.gen(function*() {
const input = yield* Schema.decodeUnknown(CancelSubscriptionInputSchema)(
data,
);
const {
customerId,
subscriptionId,
options = {}
} = input;
const subscription = yield* retrieveSubscription(subscriptionId);
yield* validateSubscriptionOwnership(subscription, customerId);
yield* updateSubscription(subscriptionId, options);
return {
status: "success"
as
const
};
}).pipe(
Effect.catchTag("ParseError", () => {
return Effect.dieMessage("Invalid data");
}),
Effect.catchAll((e) => {
return Effect.dieMessage(e.message);
}),
Effect.provide(StripeLayer.Default),
);
const program = (data: unknown) =>
Effect.gen(function*() {
const input = yield* Schema.decodeUnknown(CancelSubscriptionInputSchema)(
data,
);
const {
customerId,
subscriptionId,
options = {}
} = input;
const subscription = yield* retrieveSubscription(subscriptionId);
yield* validateSubscriptionOwnership(subscription, customerId);
yield* updateSubscription(subscriptionId, options);
return {
status: "success"
as
const
};
}).pipe(
Effect.catchTag("ParseError", () => {
return Effect.dieMessage("Invalid data");
}),
Effect.catchAll((e) => {
return Effect.dieMessage(e.message);
}),
Effect.provide(StripeLayer.Default),
);