From f6a526ebe864edd83d6da81f85926e0f39fc0eb1 Mon Sep 17 00:00:00 2001 From: saharrahmai Date: Mon, 12 May 2025 21:08:37 +0330 Subject: [PATCH 1/8] add select version api and make its component --- .../create/_components/select-version.tsx | 30 +++++++++++++++++ .../app/dashboard/products/create/page.tsx | 8 ++--- package.json | 2 +- .../flat/get/get-product-versions.schema.ts | 24 ++++++++++++++ .../flat/get/get-product-versions.ts | 32 +++++++++++++++++++ .../flat/get/get-product-versions.types.ts | 16 ++++++++++ .../flat/get/use-get-product-versions.ts | 31 ++++++++++++++++++ packages/apis/turbo/generators/config.ts | 6 ++-- 8 files changed, 140 insertions(+), 9 deletions(-) create mode 100644 apps/core/app/dashboard/products/create/_components/select-version.tsx create mode 100644 packages/apis/src/services/core/shop/product-version/flat/get/get-product-versions.schema.ts create mode 100644 packages/apis/src/services/core/shop/product-version/flat/get/get-product-versions.ts create mode 100644 packages/apis/src/services/core/shop/product-version/flat/get/get-product-versions.types.ts create mode 100644 packages/apis/src/services/core/shop/product-version/flat/get/use-get-product-versions.ts diff --git a/apps/core/app/dashboard/products/create/_components/select-version.tsx b/apps/core/app/dashboard/products/create/_components/select-version.tsx new file mode 100644 index 00000000..ae0769e5 --- /dev/null +++ b/apps/core/app/dashboard/products/create/_components/select-version.tsx @@ -0,0 +1,30 @@ +import { UseGetProductVersions } from "@repo/apis/core/shop/product-version/flat/get/use-get-product-versions"; +import { Select, SelectValue, SelectTrigger, SelectLabel, SelectContent, SelectGroup, SelectItem } from "@repo/ui/components"; + +const SelectVersion = ({ productId }: { productId: string }) => { + const { data, isLoading } = UseGetProductVersions({ + params: { + productId, + }, + }); + + return ( + + ) + +}; + +export { SelectVersion }; diff --git a/apps/core/app/dashboard/products/create/page.tsx b/apps/core/app/dashboard/products/create/page.tsx index affc8713..e9475a8b 100644 --- a/apps/core/app/dashboard/products/create/page.tsx +++ b/apps/core/app/dashboard/products/create/page.tsx @@ -10,7 +10,7 @@ import { import { Button } from "@repo/ui/components"; import { TabGeneral } from "./_components/tabGeneral"; import Version from "./_components/version/version"; - +import { SelectVersion } from "./_components/select-version"; const CreateProductPage = () => { const methods = useForm<{ price: string; discount: number | null }>(); const { handleSubmit } = methods; @@ -31,9 +31,9 @@ const CreateProductPage = () => { {/* Actions */}
-
select version
- - +
+
+
{/* Content */} diff --git a/package.json b/package.json index bfa01bb7..8a679422 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "prettier": "^3.3.2", "turbo": "2.0.6" }, - "packageManager": "yarn@1.22.22", + "packageManager": "bun@1.1.19", "engines": { "node": ">=18" }, diff --git a/packages/apis/src/services/core/shop/product-version/flat/get/get-product-versions.schema.ts b/packages/apis/src/services/core/shop/product-version/flat/get/get-product-versions.schema.ts new file mode 100644 index 00000000..b599636d --- /dev/null +++ b/packages/apis/src/services/core/shop/product-version/flat/get/get-product-versions.schema.ts @@ -0,0 +1,24 @@ +import { apiResponseSchema } from "#schema/api-response-schema"; +import { z } from "zod"; + +// Request +export const getProductVersionsRequestSchemaTransformed = z + .object({ + productId: z.string(), + }) + .transform((data) => ({ + product_id: data.productId, + })); + +// Response +export const getProductVersionsResponseSchemaTransofrmed = apiResponseSchema.extend({ + data: z.array(z.object({ + version: z.string(), + id: z.number(), + })), +}).transform((data) => data); + +export const getProductVersionsSchema = { + response: getProductVersionsResponseSchemaTransofrmed, + request: getProductVersionsRequestSchemaTransformed, +}; diff --git a/packages/apis/src/services/core/shop/product-version/flat/get/get-product-versions.ts b/packages/apis/src/services/core/shop/product-version/flat/get/get-product-versions.ts new file mode 100644 index 00000000..23cc76d5 --- /dev/null +++ b/packages/apis/src/services/core/shop/product-version/flat/get/get-product-versions.ts @@ -0,0 +1,32 @@ +import { coreApi } from "#instance/core-api"; +import path from "path"; +import { ApiResponse } from "@repo/apis/types/api.types"; +import { requestHandler } from "@repo/apis/utils/request-handler"; +import { getProductVersionsSchema as schema } from "./get-product-versions.schema"; +import { + GetProductVersionsRequest, + GetProductVersionsResponse, + GetProductVersionsResponseTransformed, +} from "./get-product-versions.types"; + +const getProductVersionsURL = () => path.join("/shop/product-version/flat/"); + +export const getProductVersions = async ( + props: GetProductVersionsRequest, +): Promise> => { + const payloadParsed = schema.request.parse(props); + const URL = getProductVersionsURL(); + + const response = await requestHandler( + () => coreApi.get(URL, { params: payloadParsed }), + schema.response._def.schema, + { + isMock: true, + }, + ); + + + const dataParsed = schema.response.parse(response.data); + + return { ...response, data: dataParsed }; +}; diff --git a/packages/apis/src/services/core/shop/product-version/flat/get/get-product-versions.types.ts b/packages/apis/src/services/core/shop/product-version/flat/get/get-product-versions.types.ts new file mode 100644 index 00000000..17c4f078 --- /dev/null +++ b/packages/apis/src/services/core/shop/product-version/flat/get/get-product-versions.types.ts @@ -0,0 +1,16 @@ +import { z } from "zod"; +import { getProductVersionsSchema } from "./get-product-versions.schema"; + +// Response +export type GetProductVersionsRequest = z.input; + +export type GetProductVersionsRequestTransofrmed = z.infer< + typeof getProductVersionsSchema.request +>; + +// Request +export type GetProductVersionsResponse = z.input; + +export type GetProductVersionsResponseTransformed = z.infer< + typeof getProductVersionsSchema.response +>; diff --git a/packages/apis/src/services/core/shop/product-version/flat/get/use-get-product-versions.ts b/packages/apis/src/services/core/shop/product-version/flat/get/use-get-product-versions.ts new file mode 100644 index 00000000..7c7455d3 --- /dev/null +++ b/packages/apis/src/services/core/shop/product-version/flat/get/use-get-product-versions.ts @@ -0,0 +1,31 @@ +import { + ApiError, + ApiResponse, + UseQueryProps, + WithParams, +} from "@repo/apis/types/api.types"; +import { useQuery } from "@tanstack/react-query"; +import { getProductVersions } from "./get-product-versions"; +import { + GetProductVersionsRequest, + GetProductVersionsResponseTransformed, +} from "./get-product-versions.types"; + +export type UseGetProductVersionsProps = UseQueryProps< + ApiResponse, + WithParams +>; + +export const getProductVersionsQueryKey = () => ["getProductVersions"]; + +export const UseGetProductVersions = (props: UseGetProductVersionsProps) => { + const { params, ...resProps } = props; + + const query = useQuery, ApiError>({ + queryKey: getProductVersionsQueryKey(), + queryFn: () => getProductVersions(params), + ...resProps, + }); + + return query; +}; diff --git a/packages/apis/turbo/generators/config.ts b/packages/apis/turbo/generators/config.ts index da61e4ad..4b1ded72 100644 --- a/packages/apis/turbo/generators/config.ts +++ b/packages/apis/turbo/generators/config.ts @@ -58,11 +58,9 @@ export default function generator(plop: PlopTypes.NodePlopAPI): void { default: "core", }, { - type: "list", + type: "input", name: "path", - message: "Select the API path from Swagger JSON:", - choices: swaggerPaths.length > 0 ? swaggerPaths : ["No paths available"], - when: () => swaggerPaths.length > 0, + message: "Enter the API path:" }, ], actions(data) { From 115d5045dc371e88b834bb7cbe1a154b3da00079 Mon Sep 17 00:00:00 2001 From: saharrahmai Date: Mon, 12 May 2025 21:34:35 +0330 Subject: [PATCH 2/8] add select version api and make its component --- .../create/_components/select-version.tsx | 29 ++++++-------- .../app/dashboard/products/create/page.tsx | 4 +- bun.lock | 40 ++++++++++++++++--- .../components/molecules/label-wrapper.tsx | 2 +- 4 files changed, 50 insertions(+), 25 deletions(-) diff --git a/apps/core/app/dashboard/products/create/_components/select-version.tsx b/apps/core/app/dashboard/products/create/_components/select-version.tsx index ae0769e5..b842ebb2 100644 --- a/apps/core/app/dashboard/products/create/_components/select-version.tsx +++ b/apps/core/app/dashboard/products/create/_components/select-version.tsx @@ -1,5 +1,5 @@ import { UseGetProductVersions } from "@repo/apis/core/shop/product-version/flat/get/use-get-product-versions"; -import { Select, SelectValue, SelectTrigger, SelectLabel, SelectContent, SelectGroup, SelectItem } from "@repo/ui/components"; +import { Select } from "@repo/ui/components"; const SelectVersion = ({ productId }: { productId: string }) => { const { data, isLoading } = UseGetProductVersions({ @@ -9,22 +9,17 @@ const SelectVersion = ({ productId }: { productId: string }) => { }); return ( - - ) - + ({ label: item.version, From bdc6a8d4c7183ee896a8f50a43502c8b55998d44 Mon Sep 17 00:00:00 2001 From: saharrahmai Date: Mon, 12 May 2025 21:46:01 +0330 Subject: [PATCH 4/8] add handleCgange --- .../dashboard/products/create/_components/select-version.tsx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/apps/core/app/dashboard/products/create/_components/select-version.tsx b/apps/core/app/dashboard/products/create/_components/select-version.tsx index a1bbeb04..336159a9 100644 --- a/apps/core/app/dashboard/products/create/_components/select-version.tsx +++ b/apps/core/app/dashboard/products/create/_components/select-version.tsx @@ -8,9 +8,14 @@ const SelectVersion = ({ productId }: { productId: string }) => { }, }); + const handleChange = (value: string) => { + console.log(value) + } + return (