83 lines
2.4 KiB
TypeScript
83 lines
2.4 KiB
TypeScript
import { user } from '@/feactures/auth/schemas/register';
|
|
import { all } from 'axios';
|
|
import { z } from 'zod';
|
|
|
|
export type InventoryTable = z.infer<typeof product>;
|
|
export type EditInventory = z.infer<typeof editInventory>; //output
|
|
export type formDataInput = z.input<typeof editInventory>;
|
|
export type ProductApiResponseSchema = z.infer<typeof productApiResponseSchema>;
|
|
export type allProducts = z.infer<typeof allProducts>;
|
|
|
|
export const product = z.object({
|
|
id: z.number().optional(),
|
|
title: z.string(),
|
|
description: z.string(),
|
|
// category: z.string(),
|
|
stock: z.number(),
|
|
price: z.string(),
|
|
urlImg: z.string(),
|
|
userId: z.number().optional()
|
|
});
|
|
|
|
export const editInventory = z.object({
|
|
id: z.number().optional(),
|
|
title: z.string().min(5, { message: "Debe de tener 5 o más caracteres" }),
|
|
description: z.string().min(10, { message: "Debe de tener 10 o más caracteres" }),
|
|
stock: z.string().transform(val => Number(val)).pipe(z.number(
|
|
{ invalid_type_error: 'El stock debe ser un número' }).min(0, { message: "El stock debe ser mayor a 0" })
|
|
),
|
|
price: z.string(),
|
|
urlImg: z.string(),
|
|
userId: z.number().optional(),
|
|
})
|
|
|
|
export const allProducts = z.object({
|
|
id: z.number().optional(),
|
|
title: z.string().min(5, { message: "Debe de tener 5 o más caracteres" }),
|
|
description: z.string().min(10, { message: "Debe de tener 10 o más caracteres" }),
|
|
stock: z.number(),
|
|
price: z.string(),
|
|
urlImg: z.string(),
|
|
userId: z.number(),
|
|
fullname: z.string()
|
|
})
|
|
|
|
export const ApiResponseSchema = z.object({
|
|
message: z.string(),
|
|
data: z.array(product),
|
|
meta: z.object({
|
|
page: z.number(),
|
|
limit: z.number(),
|
|
totalCount: z.number(),
|
|
totalPages: z.number(),
|
|
hasNextPage: z.boolean(),
|
|
hasPreviousPage: z.boolean(),
|
|
nextPage: z.number().nullable(),
|
|
previousPage: z.number().nullable(),
|
|
}),
|
|
})
|
|
|
|
export const productApiResponseSchema = z.object({
|
|
message: z.string(),
|
|
data: z.array(allProducts),
|
|
meta: z.object({
|
|
page: z.number(),
|
|
limit: z.number(),
|
|
totalCount: z.number(),
|
|
totalPages: z.number(),
|
|
hasNextPage: z.boolean(),
|
|
hasPreviousPage: z.boolean(),
|
|
nextPage: z.number().nullable(),
|
|
previousPage: z.number().nullable(),
|
|
}),
|
|
})
|
|
|
|
export const productMutate = z.object({
|
|
message: z.string(),
|
|
data: product,
|
|
})
|
|
|
|
export const getProduct = z.object({
|
|
message: z.string(),
|
|
data: allProducts,
|
|
}) |