diff --git a/packages/cms/core/src/create-cms-client.ts b/packages/cms/core/src/create-cms-client.ts index 3c3f15b84..5f3018b6d 100644 --- a/packages/cms/core/src/create-cms-client.ts +++ b/packages/cms/core/src/create-cms-client.ts @@ -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(); } diff --git a/packages/database-webhooks/src/server/services/database-webhook-handler.service.ts b/packages/database-webhooks/src/server/services/database-webhook-handler.service.ts index 37474c1e7..794b8dc1c 100644 --- a/packages/database-webhooks/src/server/services/database-webhook-handler.service.ts +++ b/packages/database-webhooks/src/server/services/database-webhook-handler.service.ts @@ -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) { diff --git a/packages/database-webhooks/src/server/services/database-webhook-router.service.ts b/packages/database-webhooks/src/server/services/database-webhook-router.service.ts index 50ce0a9d6..d6caf9766 100644 --- a/packages/database-webhooks/src/server/services/database-webhook-router.service.ts +++ b/packages/database-webhooks/src/server/services/database-webhook-router.service.ts @@ -12,19 +12,19 @@ export class DatabaseWebhookRouterService { case 'invitations': { const payload = body as RecordChange; - return this.handleInvitations(payload); + return this.handleInvitationsWebhook(payload); } case 'subscriptions': { const payload = body as RecordChange; - return this.handleSubscriptions(payload); + return this.handleSubscriptionsWebhook(payload); } case 'accounts_memberships': { const payload = body as RecordChange; - 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