refactor(dto): centralize backend schema defaults
This commit is contained in:
@@ -3,6 +3,8 @@
|
||||
*/
|
||||
import { z } from "zod";
|
||||
|
||||
import { stringOrNull } from "../nullable-defaults";
|
||||
|
||||
const paymentUrlKeys = [
|
||||
"cashierUrl",
|
||||
"cashier_url",
|
||||
@@ -20,17 +22,17 @@ const paymentUrlKeys = [
|
||||
export const CreatePaymentOrderResponseSchema = z.object({
|
||||
orderId: z.string(),
|
||||
payParams: z.record(z.string(), z.unknown()),
|
||||
cashierUrl: z.string().optional(),
|
||||
cashier_url: z.string().optional(),
|
||||
checkoutUrl: z.string().optional(),
|
||||
checkout_url: z.string().optional(),
|
||||
paymentUrl: z.string().optional(),
|
||||
payment_url: z.string().optional(),
|
||||
approvalUrl: z.string().optional(),
|
||||
approval_url: z.string().optional(),
|
||||
redirectUrl: z.string().optional(),
|
||||
redirect_url: z.string().optional(),
|
||||
url: z.string().optional(),
|
||||
cashierUrl: stringOrNull,
|
||||
cashier_url: stringOrNull,
|
||||
checkoutUrl: stringOrNull,
|
||||
checkout_url: stringOrNull,
|
||||
paymentUrl: stringOrNull,
|
||||
payment_url: stringOrNull,
|
||||
approvalUrl: stringOrNull,
|
||||
approval_url: stringOrNull,
|
||||
redirectUrl: stringOrNull,
|
||||
redirect_url: stringOrNull,
|
||||
url: stringOrNull,
|
||||
}).transform((data) => {
|
||||
const payParams = { ...data.payParams };
|
||||
|
||||
|
||||
@@ -3,20 +3,26 @@
|
||||
*/
|
||||
import { z } from "zod";
|
||||
|
||||
import {
|
||||
booleanOrFalse,
|
||||
numberOrNull,
|
||||
stringOrNull,
|
||||
} from "../nullable-defaults";
|
||||
|
||||
export const PaymentPlanSchema = z.object({
|
||||
planId: z.string(),
|
||||
planName: z.string(),
|
||||
orderType: z.string(),
|
||||
vipDays: z.number().nullable(),
|
||||
dolAmount: z.number().nullable(),
|
||||
vipDays: numberOrNull,
|
||||
dolAmount: numberOrNull,
|
||||
creditBalance: z.number(),
|
||||
amountCents: z.number(),
|
||||
originalAmountCents: z.number().nullable().default(null),
|
||||
dailyPriceCents: z.number().nullable().default(null),
|
||||
originalAmountCents: numberOrNull,
|
||||
dailyPriceCents: numberOrNull,
|
||||
currency: z.string(),
|
||||
isFirstRechargeOffer: z.boolean().default(false),
|
||||
firstRechargeDiscountPercent: z.number().nullable().default(null),
|
||||
promotionType: z.string().nullable().default(null),
|
||||
isFirstRechargeOffer: booleanOrFalse,
|
||||
firstRechargeDiscountPercent: numberOrNull,
|
||||
promotionType: stringOrNull,
|
||||
});
|
||||
|
||||
export type PaymentPlanInput = z.input<typeof PaymentPlanSchema>;
|
||||
|
||||
@@ -3,7 +3,13 @@
|
||||
*/
|
||||
import { z } from "zod";
|
||||
|
||||
import { booleanOrFalse, numberOrZero, stringOrEmpty } from "../nullable-defaults";
|
||||
import {
|
||||
arrayOrEmpty,
|
||||
booleanOrFalse,
|
||||
numberOrZero,
|
||||
schemaOrNull,
|
||||
stringOrEmpty,
|
||||
} from "../nullable-defaults";
|
||||
import { PaymentPlanSchema } from "./payment_plan";
|
||||
|
||||
export const FirstRechargeOfferSchema = z.object({
|
||||
@@ -13,9 +19,9 @@ export const FirstRechargeOfferSchema = z.object({
|
||||
});
|
||||
|
||||
export const PaymentPlansResponseSchema = z.object({
|
||||
isFirstRecharge: z.boolean().default(false),
|
||||
firstRechargeOffer: FirstRechargeOfferSchema.nullable().default(null),
|
||||
plans: z.array(PaymentPlanSchema),
|
||||
isFirstRecharge: booleanOrFalse,
|
||||
firstRechargeOffer: schemaOrNull(FirstRechargeOfferSchema),
|
||||
plans: arrayOrEmpty(PaymentPlanSchema),
|
||||
});
|
||||
|
||||
export type PaymentPlansResponseInput = z.input<
|
||||
|
||||
@@ -3,9 +3,11 @@
|
||||
*/
|
||||
import { z } from "zod";
|
||||
|
||||
import { booleanOrFalse, stringOrNull } from "../nullable-defaults";
|
||||
|
||||
export const PaymentVipStatusResponseSchema = z.object({
|
||||
isVip: z.boolean(),
|
||||
vipExpiresAt: z.string().nullable(),
|
||||
isVip: booleanOrFalse,
|
||||
vipExpiresAt: stringOrNull,
|
||||
});
|
||||
|
||||
export type PaymentVipStatusResponseInput = z.input<
|
||||
|
||||
Reference in New Issue
Block a user