import { NextResponse } from "next/server" import { z } from "zod" import { db } from "@/lib/db" /** * @swagger * /api/gweets/{id}: * get: * description: Gives back a List of Gweets * parameters: * - name: id * in: path * description: ID of Gweet that needs to be fetched * required: true * schema: * type: integer * format: int64 * content: * application/json: * schema: * responses: * 200: * description: fetched gweets! * 400: * description: Invalid request body! * 404: * description: Gweet not found! * 500: * description: Error */ export async function GET(request: Request, { params }: { params: { id: string } }) { const { id } = params const gweetIdSchema = z.string().cuid() const zod = gweetIdSchema.safeParse(id) if (!zod.success) { return NextResponse.json({ message: "Invalid request body", error: zod.error.formErrors, }, { status: 400 }) } try { const gweet = await db.gweet.findUnique({ where: { id, }, include: { author: { select: { id: true, username: true, name: true, image: true, }, }, likes: { include: { user: { include: { followers: true, }, }, }, orderBy: { createdAt: "desc", }, }, media: true, regweets: { include: { user: { include: { followers: true, }, }, }, orderBy: { createdAt: "desc", }, }, quote: { include: { author: true, media: true, }, }, allQuotes: { include: { likes: true, regweets: true, author: true, quote: { include: { author: true, }, }, }, orderBy: { createdAt: "desc", }, }, comment: { include: { author: { select: { id: true, username: true, }, }, }, }, allComments: true, }, }) if (!gweet) { return NextResponse.json({ message: "Gweet not found", }, { status: 404 }) } return NextResponse.json(gweet, { status: 200 }) } catch (error) { return NextResponse.json({ message: "Something went wrong", error, }, { status: 500 }) } }