import { NextResponse } from "next/server";
import { fetchDataViaGet } from "../utils";
import { ENDPOINTS } from "../config";

const list = {
  watching: 1,
  planned: 2,
  watched: 3,
  delayed: 4,
  abandoned: 5,
};

const sort = {
  adding_descending: 1,
  adding_ascending: 2,
  // year_descending: 3,
  // year_ascending: 4,
  alphabet_descending: 5,
  alphabet_ascending: 6,
};

export async function GET(request) {
  const page = parseInt(request.nextUrl.searchParams.get(["page"])) || 0;
  const listName = request.nextUrl.searchParams.get(["list"]) || null;
  const token = request.nextUrl.searchParams.get(["token"]) || null;
  const sortName = request.nextUrl.searchParams.get(["sort"]) || "adding_descending";

  if (!token || token == "null") {
    return NextResponse.json({ message: "No token provided" }, { status: 403 });
  }

  if (!listName || listName == "null") {
    return NextResponse.json({ message: "No list provided" }, { status: 400 });
  }

  if (!list[listName]) {
    return NextResponse.json({ message: "Unknown list" }, { status: 400 });
  }

  if (!sort[sortName]) {
    return NextResponse.json({ message: "Unknown sort" }, { status: 400 });
  }

  let url = new URL(`${ENDPOINTS.user.bookmark}/${list[listName]}/${page}`);
  url.searchParams.set("token", token);
  url.searchParams.set("sort", sort[sortName]);

  const response = await fetchDataViaGet(url.toString());
  return NextResponse.json(response);
}