| import { auth } from '@/app/(auth)/auth'; | |
| import { getChatById, getVotesByChatId, voteMessage } from '@/lib/db/queries'; | |
| import { ChatSDKError } from '@/lib/errors'; | |
| export async function GET(request: Request) { | |
| const { searchParams } = new URL(request.url); | |
| const chatId = searchParams.get('chatId'); | |
| if (!chatId) { | |
| return new ChatSDKError( | |
| 'bad_request:api', | |
| 'Parameter chatId is required.', | |
| ).toResponse(); | |
| } | |
| const session = await auth(); | |
| if (!session?.user) { | |
| return new ChatSDKError('unauthorized:vote').toResponse(); | |
| } | |
| const chat = await getChatById({ id: chatId }); | |
| if (!chat) { | |
| return new ChatSDKError('not_found:chat').toResponse(); | |
| } | |
| if (chat.userId !== session.user.id) { | |
| return new ChatSDKError('forbidden:vote').toResponse(); | |
| } | |
| const votes = await getVotesByChatId({ id: chatId }); | |
| return Response.json(votes, { status: 200 }); | |
| } | |
| export async function PATCH(request: Request) { | |
| const { | |
| chatId, | |
| messageId, | |
| type, | |
| }: { chatId: string; messageId: string; type: 'up' | 'down' } = | |
| await request.json(); | |
| if (!chatId || !messageId || !type) { | |
| return new ChatSDKError( | |
| 'bad_request:api', | |
| 'Parameters chatId, messageId, and type are required.', | |
| ).toResponse(); | |
| } | |
| const session = await auth(); | |
| if (!session?.user) { | |
| return new ChatSDKError('unauthorized:vote').toResponse(); | |
| } | |
| const chat = await getChatById({ id: chatId }); | |
| if (!chat) { | |
| return new ChatSDKError('not_found:vote').toResponse(); | |
| } | |
| if (chat.userId !== session.user.id) { | |
| return new ChatSDKError('forbidden:vote').toResponse(); | |
| } | |
| await voteMessage({ | |
| chatId, | |
| messageId, | |
| type: type, | |
| }); | |
| return new Response('Message voted', { status: 200 }); | |
| } | |