import { z } from 'zod';

export const errorResponseSchema = z.object({
  status: z.literal('error'),
  code: z.number(),
  errorType: z.string(),
  message: z.string(),
});

export const successResponseSchema = <T extends z.ZodTypeAny>(itemSchema: T) =>
  z.object({
    status: z.literal('success'),
    code: z.literal(200),
    data: itemSchema.optional(),
  });

export const responseSchema = <T extends z.ZodTypeAny>(itemSchema: T) =>
  z.union([successResponseSchema(itemSchema), errorResponseSchema]);
