// src/server/features/tasks/tasks.schema.ts
// Zod schemas for tasks validation - imports from shared contracts

import { z } from 'zod';
import {
  positionSchema,
  taskSchema,
  createTaskInputSchema,
  updateTaskInputSchema,
  updateTaskPositionsInputSchema,
  reorderTasksInputSchema,
  tasksListResponseSchema,
  taskResponseSchema,
} from '@shared/contracts/tasks';

// Re-export schemas from shared contracts
export { positionSchema };
export { taskSchema };
export const createTaskSchema = createTaskInputSchema;
export const updateTaskSchema = updateTaskInputSchema;
export const updateTaskPositionsSchema = updateTaskPositionsInputSchema;
export const reorderTasksSchema = reorderTasksInputSchema;
export { tasksListResponseSchema };
export { taskResponseSchema };

// Error response schema
export const errorResponseSchema = z.object({
  success: z.boolean(),
  error: z.object({
    message: z.string(),
    code: z.string(),
  }),
});

// Types
export type CreateTaskInput = z.infer<typeof createTaskInputSchema>;
export type UpdateTaskInput = z.infer<typeof updateTaskInputSchema>;
export type UpdateTaskPositionsInput = z.infer<typeof updateTaskPositionsInputSchema>;
export type ReorderTasksInput = z.infer<typeof reorderTasksInputSchema>;
export type TaskResponse = z.infer<typeof taskSchema>;
export type Position = z.infer<typeof positionSchema>;
