Skip to content

Commit

Permalink
Add routes for fetching and updating genres
Browse files Browse the repository at this point in the history
  • Loading branch information
Advayp committed Jan 25, 2025
1 parent 5e41a22 commit 5208a0b
Show file tree
Hide file tree
Showing 3 changed files with 102 additions and 0 deletions.
51 changes: 51 additions & 0 deletions backend/app/api/genre/add/route.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
import prisma from '@/lib/prisma';
import { verifySession } from '@/lib/session';
import { ErrorResponse } from '@/lib/types';
import { Genre } from '@prisma/client';
import { NextRequest, NextResponse } from 'next/server';

type PutRequest = {
genreName: string;
};

type PutResponse = {
genre: Genre;
};

export const PUT = async (
req: NextRequest
): Promise<NextResponse<PutResponse | ErrorResponse>> => {
const { genreName }: PutRequest = await req.json();

const session = await verifySession();

if (!session.isAuth) {
return NextResponse.json({ error: 'Invalid session' }, { status: 400 });
}

const genre = await prisma.genre.upsert({
where: {
value: genreName,
},
create: {
value: genreName,
users: {
connect: {
id: session.uid,
},
},
},
update: {
users: {
connect: {
id: session.uid,
},
},
},
include: {
users: true,
},
});

return NextResponse.json({ genre });
};
43 changes: 43 additions & 0 deletions backend/app/api/genre/remove/route.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import prisma from '@/lib/prisma';
import { verifySession } from '@/lib/session';
import { ErrorResponse } from '@/lib/types';
import { Genre } from '@prisma/client';
import { NextRequest, NextResponse } from 'next/server';

type PutRequest = {
genreName: string;
};

type PutResponse = {
genre: Genre;
};

export const PUT = async (
req: NextRequest
): Promise<NextResponse<PutResponse | ErrorResponse>> => {
const { genreName }: PutRequest = await req.json();

const session = await verifySession();

if (!session.isAuth) {
return NextResponse.json({ error: 'Invalid session' }, { status: 400 });
}

const genre = await prisma.genre.upsert({
where: {
value: genreName,
},
create: {
value: genreName,
},
update: {
users: {
disconnect: {
id: session.uid,
},
},
},
});

return NextResponse.json({ genre });
};
8 changes: 8 additions & 0 deletions backend/app/api/genre/route.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import prisma from '@/lib/prisma';
import { NextResponse } from 'next/server';

export const GET = async () => {
const genres = await prisma.genre.findMany();

return NextResponse.json({ genres });
};

0 comments on commit 5208a0b

Please sign in to comment.