// apps/web/src/server/schemas/languages.ts
import { z } from 'zod';

/**
 * Postgres regconfig values supported for full-text search.
 * Exported for Plan 4 reuse (tsvector generation, migration guards).
 */
export const KNOWN_REGCONFIGS = [
  'simple',
  'english',
  'simple_unaccent',
  'arabic',
  'russian',
] as const;

export const languageCodeSchema = z
  .string()
  .trim()
  .regex(/^[a-z]{2,3}(-[A-Z]{2})?$/, 'BCP-47 like "he", "en", "ar", "pt-BR"');

export const languageCreateSchema = z.object({
  code: languageCodeSchema,
  nameNative: z.string().trim().min(1).max(80),
  nameEnglish: z.string().trim().min(1).max(80),
  direction: z.enum(['ltr', 'rtl']),
  searchConfig: z.enum(KNOWN_REGCONFIGS),
  isActive: z.boolean().default(true),
  isDefault: z.boolean().default(false),
  sortOrder: z.number().int().min(0).max(1000).default(0),
});

export const languageUpdateSchema = languageCreateSchema.omit({ code: true }).partial();

export type LanguageInput = z.infer<typeof languageCreateSchema>;
export type LanguageUpdate = z.infer<typeof languageUpdateSchema>;
