Implement error handling and adjust import paths
This commit introduces error handling in the 'database-webhook-handler.service.ts' to log and rethrow errors when processing webhooks. It also adjusts the import paths for ContentlayerClient and WordpressClient in 'create-cms-client.ts'. Method names in 'database-webhook-router.service.ts' have been updated for clarity.
This commit is contained in:
@@ -19,18 +19,18 @@ export async function createCmsClient(
|
||||
return getWordpressClient();
|
||||
|
||||
default:
|
||||
throw new Error(`Unknown CMS type: ${type}`);
|
||||
throw new Error(`Unknown CMS type`);
|
||||
}
|
||||
}
|
||||
|
||||
async function getContentLayerClient() {
|
||||
const { ContentlayerClient } = await import('../../contentlayer');
|
||||
const { ContentlayerClient } = await import('../../contentlayer/src/client');
|
||||
|
||||
return new ContentlayerClient();
|
||||
}
|
||||
|
||||
async function getWordpressClient() {
|
||||
const { WordpressClient } = await import('../../wordpress');
|
||||
const { WordpressClient } = await import('../../wordpress/src/wp-client');
|
||||
|
||||
return new WordpressClient();
|
||||
}
|
||||
|
||||
@@ -36,16 +36,30 @@ export class DatabaseWebhookHandlerService {
|
||||
// handle the webhook
|
||||
const service = new DatabaseWebhookRouterService(client);
|
||||
|
||||
await service.handleWebhook(json);
|
||||
try {
|
||||
await service.handleWebhook(json);
|
||||
|
||||
Logger.info(
|
||||
{
|
||||
name: this.namespace,
|
||||
table,
|
||||
type,
|
||||
},
|
||||
'Webhook processed successfully',
|
||||
);
|
||||
Logger.info(
|
||||
{
|
||||
name: this.namespace,
|
||||
table,
|
||||
type,
|
||||
},
|
||||
'Webhook processed successfully',
|
||||
);
|
||||
} catch (error) {
|
||||
Logger.error(
|
||||
{
|
||||
name: this.namespace,
|
||||
table,
|
||||
type,
|
||||
error,
|
||||
},
|
||||
'Failed to process webhook',
|
||||
);
|
||||
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
private assertSignatureIsAuthentic(request: Request, webhooksSecret: string) {
|
||||
|
||||
@@ -12,19 +12,19 @@ export class DatabaseWebhookRouterService {
|
||||
case 'invitations': {
|
||||
const payload = body as RecordChange<typeof body.table>;
|
||||
|
||||
return this.handleInvitations(payload);
|
||||
return this.handleInvitationsWebhook(payload);
|
||||
}
|
||||
|
||||
case 'subscriptions': {
|
||||
const payload = body as RecordChange<typeof body.table>;
|
||||
|
||||
return this.handleSubscriptions(payload);
|
||||
return this.handleSubscriptionsWebhook(payload);
|
||||
}
|
||||
|
||||
case 'accounts_memberships': {
|
||||
const payload = body as RecordChange<typeof body.table>;
|
||||
|
||||
return this.handleAccountsMemberships(payload);
|
||||
return this.handleAccountsMembershipsWebhook(payload);
|
||||
}
|
||||
|
||||
default:
|
||||
@@ -32,7 +32,7 @@ export class DatabaseWebhookRouterService {
|
||||
}
|
||||
}
|
||||
|
||||
private async handleInvitations(body: RecordChange<'invitations'>) {
|
||||
private async handleInvitationsWebhook(body: RecordChange<'invitations'>) {
|
||||
const { AccountInvitationsWebhookService } = await import(
|
||||
'@kit/team-accounts/webhooks'
|
||||
);
|
||||
@@ -42,14 +42,18 @@ export class DatabaseWebhookRouterService {
|
||||
return service.handleInvitationWebhook(body.record);
|
||||
}
|
||||
|
||||
private async handleSubscriptions(body: RecordChange<'subscriptions'>) {
|
||||
private async handleSubscriptionsWebhook(
|
||||
body: RecordChange<'subscriptions'>,
|
||||
) {
|
||||
const { BillingWebhooksService } = await import('@kit/billing-gateway');
|
||||
const service = new BillingWebhooksService();
|
||||
|
||||
return service.handleSubscriptionDeletedWebhook(body.record);
|
||||
if (body.type === 'DELETE' && body.old_record) {
|
||||
return service.handleSubscriptionDeletedWebhook(body.old_record);
|
||||
}
|
||||
}
|
||||
|
||||
private handleAccountsMemberships(
|
||||
private handleAccountsMembershipsWebhook(
|
||||
payload: RecordChange<'accounts_memberships'>,
|
||||
) {
|
||||
// no-op
|
||||
|
||||
Reference in New Issue
Block a user