import { redirect } from "next/navigation";
import { auth } from "@/lib/auth";
import prisma from "@/lib/prisma";
import Link from "next/link";

export default async function SavedSearchesPage() {
  const session = await auth();
  if (!session?.user) redirect("/login");

  const savedSearches = await prisma.search.findMany({
    where: { user_id: Number(session.user.id) },
    orderBy: { created_at: "desc" },
  });

  return (
    <div className="max-w-3xl mx-auto">
      <h1 className="text-3xl font-bold text-text mb-6">Saved Searches</h1>

      {savedSearches.length === 0 ? (
        <div className="bg-surface rounded-lg p-12 text-center">
          <p className="text-text-muted mb-4">You have no saved searches yet.</p>
          <Link href="/search" className="text-primary hover:text-primary-dark font-semibold">
            Start searching
          </Link>
        </div>
      ) : (
        <div className="space-y-3">
          {savedSearches.map((search) => (
            <div key={search.id} className="bg-surface rounded-lg p-4 flex items-center justify-between">
              <div>
                <h3 className="font-semibold text-text">{search.name || search.query_string || "Untitled Search"}</h3>
                <p className="text-text-muted text-sm">
                  Saved {search.created_at?.toLocaleDateString(undefined)}
                </p>
              </div>
              {/* A.7: link to /search/results with the keyword param the
                  results page actually reads. Earlier this passed `?q=`
                  to /search (the form page, which ignores ?q=) so the
                  saved search was effectively dead — clicking did
                  nothing useful. */}
              <Link
                href={`/search/results?keyword=${encodeURIComponent(search.query_string ?? "")}`}
                className="bg-primary hover:bg-primary-dark text-white px-4 py-2 rounded-lg text-sm font-medium transition-colors"
              >
                Run Search
              </Link>
            </div>
          ))}
        </div>
      )}
    </div>
  );
}
