Refactored classes according to new convention

This commit is contained in:
giancarlo
2024-04-23 00:10:12 +08:00
parent 70da6ef1fa
commit 17e0781581
30 changed files with 351 additions and 131 deletions

View File

@@ -6,7 +6,7 @@ import { enhanceAction } from '@kit/next/actions';
import { getSupabaseServerActionClient } from '@kit/supabase/server-actions-client';
import { PersonalAccountCheckoutSchema } from '../schema/personal-account-checkout.schema';
import { UserBillingService } from './user-billing.service';
import { createUserBillingService } from './user-billing.service';
/**
* @name createPersonalAccountCheckoutSession
@@ -14,7 +14,8 @@ import { UserBillingService } from './user-billing.service';
*/
export const createPersonalAccountCheckoutSession = enhanceAction(
async function (data) {
const service = new UserBillingService(getSupabaseServerActionClient());
const client = getSupabaseServerActionClient();
const service = createUserBillingService(client);
return await service.createCheckoutSession(data);
},
@@ -24,10 +25,14 @@ export const createPersonalAccountCheckoutSession = enhanceAction(
);
/**
* @name createPersonalAccountBillingPortalSession
* @description Creates a billing Portal session for a personal account
*/
export async function createPersonalAccountBillingPortalSession() {
const service = new UserBillingService(getSupabaseServerActionClient());
const client = getSupabaseServerActionClient();
const service = createUserBillingService(client);
// get url to billing portal
const url = await service.createBillingPortalSession();
return redirect(url);

View File

@@ -17,7 +17,15 @@ import { Database } from '~/lib/database.types';
import { PersonalAccountCheckoutSchema } from '../schema/personal-account-checkout.schema';
export class UserBillingService {
export function createUserBillingService(client: SupabaseClient<Database>) {
return new UserBillingService(client);
}
/**
* @name UserBillingService
* @description Service for managing billing for personal accounts.
*/
class UserBillingService {
private readonly namespace = 'billing.personal-account';
constructor(private readonly client: SupabaseClient<Database>) {}