From 43deddca43e7ab0785c7e607f862a6310473fa20 Mon Sep 17 00:00:00 2001 From: bagasbanuna Date: Fri, 28 Nov 2025 10:48:18 +0800 Subject: [PATCH] Penambahan fitur open blockir Add: - src/app/api/mobile/block-user/[id]/ Fix: -src/app/api/mobile/block-user/route.ts ### No Issue --- src/app/api/mobile/block-user/[id]/route.tsx | 78 ++++++++++++++++++++ src/app/api/mobile/block-user/route.ts | 70 +++++++++++++++++- 2 files changed, 147 insertions(+), 1 deletion(-) create mode 100644 src/app/api/mobile/block-user/[id]/route.tsx diff --git a/src/app/api/mobile/block-user/[id]/route.tsx b/src/app/api/mobile/block-user/[id]/route.tsx new file mode 100644 index 00000000..7eac1955 --- /dev/null +++ b/src/app/api/mobile/block-user/[id]/route.tsx @@ -0,0 +1,78 @@ +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; + +export { GET, DELETE }; + +async function GET(request: Request, { params }: { params: { id: string } }) { + const { id } = params; + console.log("[ID] >>", id); + + try { + const data = await prisma.blockedUser.findUnique({ + where: { + id: id, + }, + select: { + blocked: { + select: { + id: true, + username: true, + Profile: { + select: { + id: true, + imageId: true, + }, + }, + }, + }, + menuFeature: { + select: { + name: true, + value: true, + }, + }, + }, + }); + return NextResponse.json({ + status: 200, + success: true, + message: "success", + data: data, + }); + } catch (error) { + console.log("[ERROR GET BLOCK USER] >>", error); + return NextResponse.json({ + status: 500, + success: false, + message: "error", + reason: (error as Error).message || error, + }); + } +} + +async function DELETE(request: Request, { params }: { params: { id: string } }) { + const { id } = params; + console.log("[ID] >>", id); + + try { + const data = await prisma.blockedUser.delete({ + where: { + id: id, + }, + }); + return NextResponse.json({ + status: 200, + success: true, + message: "success", + data: data, + }); + } catch (error) { + console.log("[ERROR DELETE BLOCK USER] >>", error); + return NextResponse.json({ + status: 500, + success: false, + message: "error", + reason: (error as Error).message || error, + }); + } +} diff --git a/src/app/api/mobile/block-user/route.ts b/src/app/api/mobile/block-user/route.ts index 76ca0a9b..98811d0c 100644 --- a/src/app/api/mobile/block-user/route.ts +++ b/src/app/api/mobile/block-user/route.ts @@ -2,7 +2,7 @@ import _ from "lodash"; import { NextResponse } from "next/server"; import prisma from "@/lib/prisma"; -export { POST }; +export { POST, GET }; async function POST(request: Request) { const { data } = await request.json(); @@ -45,3 +45,71 @@ async function POST(request: Request) { }); } } + +async function GET(request: Request) { + const { searchParams } = new URL(request.url); + const id = searchParams.get("id"); + const page = Number(searchParams.get("page")); + const search = searchParams.get("search"); + + const takeData = 10; + const skipData = page * takeData - takeData; + + // console.log("[BLOCKED ID]", id); + // console.log("[PAGE]", page); + // console.log("[TAKE DATA]", takeData); + // console.log("[SKIP DATA]", skipData); + // console.log("[SEARCH]", search); + + try { + const data = await prisma.blockedUser.findMany({ + take: page ? takeData : undefined, + skip: page ? skipData : undefined, + where: { + blockerId: id as any, + menuFeature: { + id: { + contains: search || "", + mode: "insensitive", + }, + }, + }, + select: { + id: true, + blocked: { + select: { + id: true, + username: true, + Profile: { + select: { + id: true, + imageId: true, + }, + }, + }, + }, + menuFeature: { + select: { + name: true, + value: true, + }, + }, + }, + }); + + return NextResponse.json({ + status: 200, + success: true, + message: "success", + data: data, + }); + } catch (error) { + console.log("[ERROR GET BLOCK USER] >>", error); + return NextResponse.json({ + status: 500, + success: false, + message: "error", + reason: (error as Error).message || error, + }); + } +}