import { z } from 'zod';
import { storeSchema } from './store.schema';
import { customerSchema } from './customer.schema';
import { sellerSchema } from './seller.schema';
import { partnerSchema } from './partner.schema';
import { productSchema } from './product.schema';
import { createApiSchema } from './api-response.schema';

/**
 * Schema Zod para validar um pedido (Order).
 * Usa z.any() pois Order tem muitos campos opcionais e variações.
 */
const orderSchema = z.any();

/**
 * Schema para validar a resposta da API ao buscar um pedido específico.
 * Formato: { success: boolean, data: Order }
 */
export const orderResponseSchema = createApiSchema(orderSchema);

/**
 * Schema para validar a resposta da API ao buscar pedidos.
 * Formato: { success: boolean, data: Order[] }
 */
export const ordersResponseSchema = createApiSchema(z.array(orderSchema));

/**
 * Schema para validar a resposta da API ao buscar lojas.
 * Formato: { success: boolean, data: Store[] }
 */
export const storesResponseSchema = createApiSchema(z.array(storeSchema));

/**
 * Schema para validar a resposta da API ao buscar clientes.
 * Formato: { success: boolean, data: Customer[] }
 */
export const customersResponseSchema = createApiSchema(z.array(customerSchema));

/**
 * Schema para validar a resposta da API ao buscar vendedores.
 * Formato: { success: boolean, data: Seller[] }
 */
export const sellersResponseSchema = createApiSchema(z.array(sellerSchema));

/**
 * Schema para validar a resposta da API ao buscar parceiros.
 * Formato: { success: boolean, data: Partner[] }
 */
export const partnersResponseSchema = createApiSchema(z.array(partnerSchema));

/**
 * Schema para validar a resposta da API ao buscar produtos.
 * Formato: { success: boolean, data: Product[] }
 */
export const productsResponseSchema = createApiSchema(z.array(productSchema));
