parentheses stuff

This commit is contained in:
2025-08-18 14:40:41 +02:00
parent 356a9e74ae
commit 34b0d64555
2 changed files with 46 additions and 1 deletions

View File

@@ -9,9 +9,45 @@ const prisma = new PrismaClient();
export async function POST(req: Request) {
const { title, description, posterUrl, suggestedBy } = await req.json();
// Check if there's already a pending request for this movie (not approved)
const existingPendingMovies = await prisma.movie.findMany({
where: {
title: {
equals: title,
mode: "insensitive"
},
approved: false
}
});
// If there's already a pending request, don't allow duplicate
if (existingPendingMovies.length > 0) {
return NextResponse.json(
{ error: "This movie has already been suggested and is pending approval." },
{ status: 400 }
);
}
// Check if there are already approved movies with the same title
const existingApprovedMovies = await prisma.movie.findMany({
where: {
title: {
equals: title,
mode: "insensitive"
},
approved: true
}
});
// If there are existing approved movies, append a number to the title
let finalTitle = title;
if (existingApprovedMovies.length > 0) {
finalTitle = `${title} (${existingApprovedMovies.length + 1})`;
}
const movie = await prisma.movie.create({
data: {
title,
title: finalTitle,
description,
posterUrl,
suggestedBy,

View File

@@ -28,6 +28,7 @@ export default function SuggestPage() {
const [query, setQuery] = useState("");
const [movies, setMovies] = useState<Movie[]>([]);
const [selectedMovie, setSelectedMovie] = useState<Movie | null>(null);
const [error, setError] = useState<string | null>(null);
const handleSearch = async (searchQuery: string) => {
setQuery(searchQuery);
@@ -42,13 +43,17 @@ export default function SuggestPage() {
const handleSelectMovie = (movie: Movie) => {
setSelectedMovie(movie);
setError(null);
};
const handleSubmit = async () => {
if (!session || !selectedMovie) {
return;
}
setError(null);
const res = await fetch("/api/movies", {
method: "POST",
headers: {
@@ -64,6 +69,9 @@ export default function SuggestPage() {
if (res.ok) {
router.push("/");
} else {
const data = await res.json();
setError(data.error || "Failed to submit movie suggestion");
}
};
@@ -97,6 +105,7 @@ export default function SuggestPage() {
{selectedMovie && (
<div className="mt-4">
<p>Selected: {selectedMovie.title}</p>
{error && <p className="text-red-500 mt-2">{error}</p>}
<Button onClick={handleSubmit} className="mt-2">
Submit
</Button>