Skip to content

Commit

Permalink
refactor: abstract entity handle validator to common set of validators
Browse files Browse the repository at this point in the history
  • Loading branch information
thetutlage committed May 13, 2024
1 parent 91589c4 commit 5a5198c
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 13 deletions.
11 changes: 3 additions & 8 deletions packages/medusa/src/api-v2/admin/collections/validators.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { HandleValidator } from "../../utils/common-validators"
import {
createFindParams,
createOperatorMap,
Expand Down Expand Up @@ -29,19 +30,13 @@ export const AdminGetCollectionsParams = createFindParams({
export type AdminCreateCollectionType = z.infer<typeof AdminCreateCollection>
export const AdminCreateCollection = z.object({
title: z.string(),
handle: z
.string()
.regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/)
.optional(),
handle: HandleValidator,
metadata: z.record(z.unknown()).optional(),
})

export type AdminUpdateCollectionType = z.infer<typeof AdminUpdateCollection>
export const AdminUpdateCollection = z.object({
title: z.string().optional(),
handle: z
.string()
.regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/)
.optional(),
handle: HandleValidator,
metadata: z.record(z.unknown()).optional(),
})
10 changes: 5 additions & 5 deletions packages/medusa/src/api-v2/admin/products/validators.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
import { ProductStatus } from "@medusajs/utils"
import { z } from "zod"
import { GetProductsParams } from "../../utils/common-validators"
import {
GetProductsParams,
HandleValidator,
} from "../../utils/common-validators"
import {
createFindParams,
createOperatorMap,
Expand Down Expand Up @@ -179,10 +182,7 @@ export const AdminCreateProduct = z
discountable: z.boolean().optional().default(true),
images: z.array(z.object({ url: z.string() })).optional(),
thumbnail: z.string().optional(),
handle: z
.string()
.regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/)
.optional(),
handle: HandleValidator,
status: statusEnum.optional().default(ProductStatus.DRAFT),
type_id: z.string().nullable().optional(),
collection_id: z.string().nullable().optional(),
Expand Down
8 changes: 8 additions & 0 deletions packages/medusa/src/api-v2/utils/common-validators/common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,11 @@ export const OptionalBooleanValidator = z.preprocess(
(val: any) => optionalBooleanMapper.get(val?.toLowerCase()),
z.boolean().optional()
)

/**
* Validates entity handle to have URL-safe characters
*/
export const HandleValidator = z
.string()
.regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/)
.optional()

0 comments on commit 5a5198c

Please sign in to comment.