feat: implement lazy singleton pattern for repository instances and update related imports

This commit is contained in:
2026-06-29 17:25:41 +08:00
parent 96612da5c0
commit 0bae53bfba
14 changed files with 69 additions and 74 deletions
+5 -4
View File
@@ -9,14 +9,12 @@ import {
PaymentOrderStatusResponse,
PaymentPlansResponse,
} from "@/data/dto/payment";
import { paymentRepository } from "@/data/repositories/payment_repository";
import type { IPaymentRepository } from "@/data/repositories/interfaces";
import { getPaymentRepository } from "@/data/repositories/payment_repository";
import { Result } from "@/utils";
const paymentRepo: IPaymentRepository = paymentRepository;
export const loadCachedPaymentPlansActor =
fromPromise<PaymentPlansResponse | null>(async () => {
const paymentRepo = getPaymentRepository();
const result = await paymentRepo.getCachedPlans();
if (Result.isErr(result)) throw result.error;
return result.data;
@@ -24,6 +22,7 @@ export const loadCachedPaymentPlansActor =
export const refreshPaymentPlansActor = fromPromise<PaymentPlansResponse>(
async () => {
const paymentRepo = getPaymentRepository();
const result = await paymentRepo.getPlans();
if (Result.isErr(result)) throw result.error;
return result.data;
@@ -34,6 +33,7 @@ export const createPaymentOrderActor = fromPromise<
CreatePaymentOrderResponse,
{ planId: string; payChannel: PayChannel; autoRenew: boolean }
>(async ({ input }) => {
const paymentRepo = getPaymentRepository();
const result = await paymentRepo.createOrder(
input.planId,
input.payChannel,
@@ -47,6 +47,7 @@ export const pollPaymentOrderStatusActor = fromPromise<
PaymentOrderStatusResponse,
{ orderId: string }
>(async ({ input }) => {
const paymentRepo = getPaymentRepository();
const result = await paymentRepo.getOrderStatus(input.orderId);
if (Result.isErr(result)) throw result.error;
return result.data;