From 089fd37ece39d6dcc11aeac22962dc6736a99fca Mon Sep 17 00:00:00 2001 From: gbuomprisco Date: Fri, 16 Aug 2024 12:48:29 +0200 Subject: [PATCH] Refactor Supabase type imports for improved clarity Replaced specific object paths with generic type helpers across several files to enhance readability and maintainability. This change standardizes the import patterns and type definitions for database tables and enums. --- .../src/components/current-lifetime-order-card.tsx | 6 +++--- .../gateway/src/components/current-plan-alert.tsx | 4 ++-- .../gateway/src/components/current-plan-badge.tsx | 6 ++---- .../src/components/current-subscription-card.tsx | 6 +++--- .../gateway/src/components/embedded-checkout.tsx | 4 ++-- .../billing-event-handler-provider.ts | 4 ++-- .../billing-webhooks/billing-webhooks.service.ts | 4 ++-- .../lemon-squeezy-webhook-handler.service.ts | 7 ++++--- .../src/services/stripe-webhook-handler.service.ts | 6 ++++-- .../admin/src/components/admin-account-page.tsx | 7 +++---- .../src/components/admin-memberships-table.tsx | 13 ++++++------- 11 files changed, 33 insertions(+), 34 deletions(-) diff --git a/packages/billing/gateway/src/components/current-lifetime-order-card.tsx b/packages/billing/gateway/src/components/current-lifetime-order-card.tsx index b322c0b24..7162aba63 100644 --- a/packages/billing/gateway/src/components/current-lifetime-order-card.tsx +++ b/packages/billing/gateway/src/components/current-lifetime-order-card.tsx @@ -1,7 +1,7 @@ import { BadgeCheck } from 'lucide-react'; import { BillingConfig, getProductPlanPairByVariantId } from '@kit/billing'; -import { Database } from '@kit/supabase/database'; +import { Tables } from '@kit/supabase/database'; import { Card, CardContent, @@ -14,8 +14,8 @@ import { Trans } from '@kit/ui/trans'; import { CurrentPlanBadge } from './current-plan-badge'; import { LineItemDetails } from './line-item-details'; -type Order = Database['public']['Tables']['orders']['Row']; -type LineItem = Database['public']['Tables']['order_items']['Row']; +type Order = Tables<'orders'> +type LineItem = Tables<'order_items'>; interface Props { order: Order & { diff --git a/packages/billing/gateway/src/components/current-plan-alert.tsx b/packages/billing/gateway/src/components/current-plan-alert.tsx index 0b4f15ad0..faa5d1dfe 100644 --- a/packages/billing/gateway/src/components/current-plan-alert.tsx +++ b/packages/billing/gateway/src/components/current-plan-alert.tsx @@ -1,10 +1,10 @@ -import { Database } from '@kit/supabase/database'; +import { Enums } from '@kit/supabase/database'; import { Alert, AlertDescription, AlertTitle } from '@kit/ui/alert'; import { Trans } from '@kit/ui/trans'; export function CurrentPlanAlert( props: React.PropsWithoutRef<{ - status: Database['public']['Enums']['subscription_status']; + status: Enums<'subscription_status'> }>, ) { let variant: 'success' | 'warning' | 'destructive'; diff --git a/packages/billing/gateway/src/components/current-plan-badge.tsx b/packages/billing/gateway/src/components/current-plan-badge.tsx index 4a947717e..d21e4e81b 100644 --- a/packages/billing/gateway/src/components/current-plan-badge.tsx +++ b/packages/billing/gateway/src/components/current-plan-badge.tsx @@ -1,10 +1,8 @@ -import { Database } from '@kit/supabase/database'; +import { Enums } from '@kit/supabase/database'; import { Badge } from '@kit/ui/badge'; import { Trans } from '@kit/ui/trans'; -type Status = - | Database['public']['Enums']['subscription_status'] - | Database['public']['Enums']['payment_status']; +type Status = Enums<'subscription_status'> | Enums<'payment_status'>; export function CurrentPlanBadge( props: React.PropsWithoutRef<{ diff --git a/packages/billing/gateway/src/components/current-subscription-card.tsx b/packages/billing/gateway/src/components/current-subscription-card.tsx index ff5d68436..079e06fbc 100644 --- a/packages/billing/gateway/src/components/current-subscription-card.tsx +++ b/packages/billing/gateway/src/components/current-subscription-card.tsx @@ -2,7 +2,7 @@ import { formatDate } from 'date-fns'; import { BadgeCheck } from 'lucide-react'; import { BillingConfig, getProductPlanPairByVariantId } from '@kit/billing'; -import { Database } from '@kit/supabase/database'; +import { Tables } from '@kit/supabase/database'; import { Alert, AlertDescription, AlertTitle } from '@kit/ui/alert'; import { Card, @@ -18,8 +18,8 @@ import { CurrentPlanAlert } from './current-plan-alert'; import { CurrentPlanBadge } from './current-plan-badge'; import { LineItemDetails } from './line-item-details'; -type Subscription = Database['public']['Tables']['subscriptions']['Row']; -type LineItem = Database['public']['Tables']['subscription_items']['Row']; +type Subscription = Tables<'subscriptions'>; +type LineItem = Tables<'subscription_items'>; interface Props { subscription: Subscription & { diff --git a/packages/billing/gateway/src/components/embedded-checkout.tsx b/packages/billing/gateway/src/components/embedded-checkout.tsx index 388b2c04c..9b2540872 100644 --- a/packages/billing/gateway/src/components/embedded-checkout.tsx +++ b/packages/billing/gateway/src/components/embedded-checkout.tsx @@ -1,9 +1,9 @@ import { Suspense, forwardRef, lazy, memo, useMemo } from 'react'; -import { Database } from '@kit/supabase/database'; +import { Enums } from '@kit/supabase/database'; import { LoadingOverlay } from '@kit/ui/loading-overlay'; -type BillingProvider = Database['public']['Enums']['billing_provider']; +type BillingProvider = Enums<'billing_provider'>; const Fallback = ; diff --git a/packages/billing/gateway/src/server/services/billing-event-handler/billing-event-handler-provider.ts b/packages/billing/gateway/src/server/services/billing-event-handler/billing-event-handler-provider.ts index 2605c6ce6..5e72c9973 100644 --- a/packages/billing/gateway/src/server/services/billing-event-handler/billing-event-handler-provider.ts +++ b/packages/billing/gateway/src/server/services/billing-event-handler/billing-event-handler-provider.ts @@ -3,7 +3,7 @@ import 'server-only'; import { SupabaseClient } from '@supabase/supabase-js'; import { BillingConfig } from '@kit/billing'; -import { Database } from '@kit/supabase/database'; +import { Database, Enums } from '@kit/supabase/database'; import { BillingEventHandlerFactoryService } from './billing-event-handler-factory.service'; import { createBillingEventHandlerService } from './billing-event-handler.service'; @@ -12,7 +12,7 @@ import { createBillingEventHandlerService } from './billing-event-handler.servic type ClientProvider = () => SupabaseClient; // the billing provider from the database -type BillingProvider = Database['public']['Enums']['billing_provider']; +type BillingProvider = Enums<'billing_provider'>; /** * @name getBillingEventHandlerService diff --git a/packages/billing/gateway/src/server/services/billing-webhooks/billing-webhooks.service.ts b/packages/billing/gateway/src/server/services/billing-webhooks/billing-webhooks.service.ts index 2c38625de..97f2413e2 100644 --- a/packages/billing/gateway/src/server/services/billing-webhooks/billing-webhooks.service.ts +++ b/packages/billing/gateway/src/server/services/billing-webhooks/billing-webhooks.service.ts @@ -1,10 +1,10 @@ import 'server-only'; -import { Database } from '@kit/supabase/database'; +import { Tables } from '@kit/supabase/database'; import { createBillingGatewayService } from '../billing-gateway/billing-gateway.service'; -type Subscription = Database['public']['Tables']['subscriptions']['Row']; +type Subscription = Tables<'subscriptions'> export function createBillingWebhooksService() { return new BillingWebhooksService(); diff --git a/packages/billing/lemon-squeezy/src/services/lemon-squeezy-webhook-handler.service.ts b/packages/billing/lemon-squeezy/src/services/lemon-squeezy-webhook-handler.service.ts index 5f18ba4f0..48100fff9 100644 --- a/packages/billing/lemon-squeezy/src/services/lemon-squeezy-webhook-handler.service.ts +++ b/packages/billing/lemon-squeezy/src/services/lemon-squeezy-webhook-handler.service.ts @@ -6,7 +6,7 @@ import { import { BillingConfig, BillingWebhookHandlerService } from '@kit/billing'; import { getLogger } from '@kit/shared/logger'; -import { Database } from '@kit/supabase/database'; +import { Database, Enums } from '@kit/supabase/database'; import { getLemonSqueezyEnv } from '../schema/lemon-squeezy-server-env.schema'; import { OrderWebhook } from '../types/order-webhook'; @@ -24,6 +24,8 @@ type UpsertSubscriptionParams = type UpsertOrderParams = Database['public']['Functions']['upsert_order']['Args']; +type BillingProvider = Enums<'billing_provider'>; + interface LineItem { id: string; quantity: number; @@ -42,8 +44,7 @@ type OrderStatus = 'pending' | 'failed' | 'paid' | 'refunded'; export class LemonSqueezyWebhookHandlerService implements BillingWebhookHandlerService { - private readonly provider: Database['public']['Enums']['billing_provider'] = - 'lemon-squeezy'; + private readonly provider: BillingProvider = 'lemon-squeezy'; private readonly namespace = 'billing.lemon-squeezy'; diff --git a/packages/billing/stripe/src/services/stripe-webhook-handler.service.ts b/packages/billing/stripe/src/services/stripe-webhook-handler.service.ts index 86df301f4..8f5586ed1 100644 --- a/packages/billing/stripe/src/services/stripe-webhook-handler.service.ts +++ b/packages/billing/stripe/src/services/stripe-webhook-handler.service.ts @@ -2,7 +2,7 @@ import Stripe from 'stripe'; import { BillingConfig, BillingWebhookHandlerService } from '@kit/billing'; import { getLogger } from '@kit/shared/logger'; -import { Database } from '@kit/supabase/database'; +import { Database, Enums } from '@kit/supabase/database'; import { StripeServerEnvSchema } from '../schema/stripe-server-env.schema'; import { createStripeClient } from './stripe-sdk'; @@ -29,6 +29,8 @@ interface LineItem { type UpsertOrderParams = Database['public']['Functions']['upsert_order']['Args']; +type BillingProvider = Enums<'billing_provider'>; + export class StripeWebhookHandlerService implements BillingWebhookHandlerService { @@ -36,7 +38,7 @@ export class StripeWebhookHandlerService constructor(private readonly config: BillingConfig) {} - private readonly provider: Database['public']['Enums']['billing_provider'] = + private readonly provider: BillingProvider = 'stripe'; private readonly namespace = 'billing.stripe'; diff --git a/packages/features/admin/src/components/admin-account-page.tsx b/packages/features/admin/src/components/admin-account-page.tsx index 053fe16c1..6e7481a74 100644 --- a/packages/features/admin/src/components/admin-account-page.tsx +++ b/packages/features/admin/src/components/admin-account-page.tsx @@ -6,7 +6,7 @@ import { VenetianMask, } from 'lucide-react'; -import { Database } from '@kit/supabase/database'; +import { Tables } from '@kit/supabase/database'; import { getSupabaseServerAdminClient } from '@kit/supabase/server-admin-client'; import { Alert, AlertDescription, AlertTitle } from '@kit/ui/alert'; import { AppBreadcrumbs } from '@kit/ui/app-breadcrumbs'; @@ -32,9 +32,8 @@ import { AdminMembersTable } from './admin-members-table'; import { AdminMembershipsTable } from './admin-memberships-table'; import { AdminReactivateUserDialog } from './admin-reactivate-user-dialog'; -type Db = Database['public']['Tables']; -type Account = Db['accounts']['Row']; -type Membership = Db['accounts_memberships']['Row']; +type Account = Tables<'accounts'>; +type Membership = Tables<'accounts_memberships'>; export function AdminAccountPage(props: { account: Account & { memberships: Membership[] }; diff --git a/packages/features/admin/src/components/admin-memberships-table.tsx b/packages/features/admin/src/components/admin-memberships-table.tsx index cd621ab1b..a9ea2c350 100644 --- a/packages/features/admin/src/components/admin-memberships-table.tsx +++ b/packages/features/admin/src/components/admin-memberships-table.tsx @@ -4,16 +4,15 @@ import Link from 'next/link'; import { ColumnDef } from '@tanstack/react-table'; -import { Database } from '@kit/supabase/database'; +import { Tables } from '@kit/supabase/database'; import { DataTable } from '@kit/ui/enhanced-data-table'; -type Membership = - Database['public']['Tables']['accounts_memberships']['Row'] & { - account: { - id: string; - name: string; - }; +type Membership = Tables<'accounts_memberships'> & { + account: { + id: string; + name: string; }; +}; export function AdminMembershipsTable(props: { memberships: Membership[] }) { return ;