fix(SW-898): remove redundant schema and add transform in signupInput

This commit is contained in:
Chuma McPhoy
2024-11-18 15:47:13 +01:00
parent 5c571c3c0c
commit a68e37c26f
3 changed files with 17 additions and 44 deletions

View File

@@ -40,6 +40,18 @@ export const saveCreditCardInput = z.object({
merchantId: z.string().optional(), merchantId: z.string().optional(),
}) })
export const signupInput = signUpSchema.extend({ export const signupInput = signUpSchema
language: z.nativeEnum(Lang), .extend({
}) language: z.nativeEnum(Lang),
})
.omit({ termsAccepted: true })
.transform((data) => ({
...data,
phoneNumber: data.phoneNumber.replace(/\s+/g, ""),
address: {
...data.address,
city: "",
country: "",
streetAddress: "",
},
}))

View File

@@ -3,10 +3,9 @@ import { metrics } from "@opentelemetry/api"
import { signupVerify } from "@/constants/routes/signup" import { signupVerify } from "@/constants/routes/signup"
import { env } from "@/env/server" import { env } from "@/env/server"
import * as api from "@/lib/api" import * as api from "@/lib/api"
import { badRequestError, serverErrorByStatus } from "@/server/errors/trpc" import { serverErrorByStatus } from "@/server/errors/trpc"
import { import {
initiateSaveCardSchema, initiateSaveCardSchema,
signupPayloadSchema,
subscriberIdSchema, subscriberIdSchema,
} from "@/server/routers/user/output" } from "@/server/routers/user/output"
import { protectedProcedure, router, serviceProcedure } from "@/server/trpc" import { protectedProcedure, router, serviceProcedure } from "@/server/trpc"
@@ -219,31 +218,10 @@ export const userMutationRouter = router({
ctx, ctx,
input, input,
}) { }) {
const payload = {
...input,
language: input.language,
phoneNumber: input.phoneNumber.replace(/\s+/g, ""),
}
signupCounter.add(1) signupCounter.add(1)
const parsedPayload = signupPayloadSchema.safeParse(payload)
if (!parsedPayload.success) {
signupFailCounter.add(1, {
error_type: "validation_error",
error: JSON.stringify(parsedPayload.error),
})
console.error(
"api.user.signup validation error",
JSON.stringify({
query: input,
error: parsedPayload.error,
})
)
throw badRequestError(parsedPayload.error)
}
const apiResponse = await api.post(api.endpoints.v1.Profile.profile, { const apiResponse = await api.post(api.endpoints.v1.Profile.profile, {
body: parsedPayload.data, body: input,
headers: { headers: {
Authorization: `Bearer ${ctx.serviceToken}`, Authorization: `Bearer ${ctx.serviceToken}`,
}, },

View File

@@ -246,20 +246,3 @@ export const initiateSaveCardSchema = z.object({
export const subscriberIdSchema = z.object({ export const subscriberIdSchema = z.object({
subscriberId: z.string(), subscriberId: z.string(),
}) })
export const signupPayloadSchema = z.object({
language: z.string(),
firstName: z.string(),
lastName: z.string(),
email: z.string(),
phoneNumber: phoneValidator("Phone is required"),
dateOfBirth: z.string(),
address: z.object({
city: z.string().default(""),
country: z.string().default(""),
countryCode: z.string().default(""),
zipCode: z.string().default(""),
streetAddress: z.string().default(""),
}),
password: passwordValidator("Password is required"),
})