import { query, create, update, remove } from "../utils"

// Get classes by package ID
export async function getClassesByPackageId(packageId: number) {
  console.log("[api] getClassesByPackageId called with packageId:", packageId)
  try {
    // Use the query function with table name and params instead of direct URL
    const result = await query("course_package_classes", { course_package_id: packageId })
    console.log("[api] getClassesByPackageId returning:", result)
    return result
  } catch (error) {
    console.error("[api] getClassesByPackageId error:", error)
    // Return empty array instead of throwing to prevent UI errors
    return []
  }
}

// Get class by ID
export async function getClassById(id: number) {
  console.log("[api] getClassById called with id:", id)
  try {
    // Use the query function with table name and ID
    const result = await query(`course_package_classes/${id}`)
    console.log("[api] getClassById returning:", result)
    return result
  } catch (error) {
    console.error("[api] getClassById error:", error)
    return null
  }
}

// Get all classes
export async function getAllClasses() {
  console.log("[api] getAllClasses called")
  try {
    // Use the query function with just the table name
    const result = await query("course_package_classes")
    console.log("[api] getAllClasses returning:", result)
    return result
  } catch (error) {
    console.error("[api] getAllClasses error:", error)
    return []
  }
}

// Get course package classes (alias for getAllClasses for compatibility)
export async function getCoursePackageClasses() {
  console.log("[api] getCoursePackageClasses called")
  return await getAllClasses()
}

// Create a new class
export async function createClass(classData: any) {
  console.log("[api] createClass called with data:", classData)
  try {
    // Use the create function with table name
    const result = await create("course_package_classes", classData)
    console.log("[api] createClass returning:", result)
    return result
  } catch (error) {
    console.error("[api] createClass error:", error)
    throw error
  }
}

// Update an existing class
export async function updateClass(id: number, classData: any) {
  console.log("[api] updateClass called with id:", id, "and data:", classData)
  try {
    // Use the update function with table name and ID
    const result = await update("course_package_classes", id, classData)
    console.log("[api] updateClass returning:", result)
    return result
  } catch (error) {
    console.error("[api] updateClass error:", error)
    throw error
  }
}

// Delete a class
export async function deleteClass(id: number) {
  console.log("[api] deleteClass called with id:", id)
  try {
    // Use the remove function with table name and ID
    const result = await remove("course_package_classes", id)
    console.log("[api] deleteClass returning:", result)
    return result
  } catch (error) {
    console.error("[api] deleteClass error:", error)
    throw error
  }
}
