import { Handlers } from "$fresh/server.ts";
import { AccessDeniedError } from "@lib/errors.ts";
import { getAllRecommendations } from "@lib/recommendation.ts";
import { json } from "@lib/helpers.ts";

export const handler: Handlers = {
  async GET(_, ctx) {
    const session = ctx.state.session;
    if (!session) {
      throw new AccessDeniedError();
    }

    const recs = await getAllRecommendations();

    const allKeywords: Record<string, number> = {};

    for (const rec of recs) {
      if (rec.keywords?.length) {
        for (const keyword of rec.keywords) {
          if (keyword in allKeywords) {
            allKeywords[keyword] += 1;
          } else {
            allKeywords[keyword] = 1;
          }
        }
      }
    }

    const keywords = Object.entries(allKeywords).sort((a, b) =>
      a[1] > b[1] ? -1 : 1
    ).slice(0, 100);

    return json({
      keywords,
    });
  },
};
