import { userSchema, userUpdateSchema } from "@/features/users/schema"
import {
  createUser,
  deleteUser,
  getAllUsers,
  getUserById,
  toggleUserStatus,
  updateUser,
} from "@/features/users/service"

export async function listUsers() {
  return getAllUsers()
}

export async function createUserFromRequest(req: Request) {
  const body = await req.json()
  const validated = userSchema.parse(body)
  return createUser(validated)
}

export async function getUser(id: string) {
  return getUserById(id)
}

export async function updateUserFromRequest(req: Request, id: string) {
  const body = await req.json()
  const validated = userUpdateSchema.parse(body)
  return updateUser(id, validated)
}

export async function deleteUserById(id: string) {
  return deleteUser(id)
}

export async function toggleUserStatusFromRequest(req: Request, id: string) {
  const body = await req.json()
  const { isActive } = body as { isActive?: unknown }

  if (typeof isActive !== "boolean") {
    const err = new Error("Invalid isActive value") as Error & { status: number }
    err.status = 400
    throw err
  }

  return toggleUserStatus(id, isActive)
}

