import { z } from 'zod';

export const getCommentsSchema = z.object({
  pagePath: z.string().min(1).max(500),
  page: z.coerce.number().int().min(1).default(1),
});

export const postAnonymousCommentSchema = z.object({
  pagePath: z.string().min(1).max(500),
  authorName: z.string().min(1).max(100).trim(),
  authorEmail: z.string().email().max(255).optional(),
  body: z.string().min(10).max(5000).trim(),
  // Honeypot — should be empty if submitted by a human
  website: z.string().max(0).optional(),
});

export const postAuthenticatedCommentSchema = z.object({
  pagePath: z.string().min(1).max(500),
  body: z.string().min(10).max(5000).trim(),
});

export const oauthExchangeSchema = z.object({
  code: z.string().min(1).max(512),
  redirectUri: z.string().url().max(1000),
});

export const moderateCommentSchema = z.object({
  action: z.enum(['approve', 'reject']),
});

export const moderationQuerySchema = z.object({
  status: z.enum(['PENDING', 'APPROVED', 'REJECTED']).optional(),
  page: z.coerce.number().int().min(1).default(1),
  pageSize: z.coerce.number().int().min(1).max(100).default(20),
});
