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 ;