import { z } from "zod"
import { ACTIONS } from "@/lib/shared/constants/modules"

const actionEnum = z.enum(ACTIONS as unknown as [string, ...string[]])

export const roleSchema = z.object({
  id: z.string().optional(),
  name: z.string().min(1, "Role name is required").max(50, "Role name too long"),
  createdAt: z.date().optional(),
  updatedAt: z.date().optional(),
})

export const roleWithPermissionsSchema = roleSchema.extend({
  permissions: z
    .array(
      z.object({
        module: z.string().min(1, "Module name is required"),
        actions: z.array(actionEnum),  // ← was hardcoded enum
      })
    )
    .default([]),
})

export const permissionSchema = z.object({
  id: z.string().optional(),
  roleId: z.string().min(1, "Role ID is required"),
  module: z.string().min(1, "Module name is required"),
  actions: z.array(actionEnum),  // ← was hardcoded enum
})

export type RoleInput = z.infer<typeof roleSchema>
export type RoleWithPermissionsInput = z.infer<typeof roleWithPermissionsSchema>
export type PermissionInput = z.infer<typeof permissionSchema>