import { FreshContext, Handlers } from "$fresh/server.ts";
import { searchMovie, searchTVShow } from "@lib/tmdb.ts";
import { AccessDeniedError, BadRequestError } from "@lib/errors.ts";

const GET = async (
  req: Request,
  ctx: FreshContext,
) => {
  const session = ctx.state.session;
  if (!session) {
    throw new AccessDeniedError();
  }

  const u = new URL(req.url);

  const query = u.searchParams.get("q");

  if (!query) {
    throw new BadRequestError();
  }

  const type = u.searchParams.get("type") || "movie";

  const res = type === "movie"
    ? await searchMovie(query)
    : await searchTVShow(query);

  return new Response(JSON.stringify(res.results));
};

export const handler: Handlers = {
  GET,
};
