Mobile API

Forum add:
- mobile/forum/[id]/comment
- mobile/forum/[id]/report-comment
- mobile/forum/[id]/report-commentar
- mobile/forum/[id]/report-postin
- mobile/master/forum-report

Fix:
- mobile/forum/[id]/route
- mobile/forum/route

### No isssue
This commit is contained in:
2025-09-27 00:01:36 +08:00
parent fab4e2526d
commit a9b57be0a6
8 changed files with 640 additions and 48 deletions

View File

@@ -1,6 +1,8 @@
import _ from "lodash";
import { NextResponse } from "next/server";
import prisma from "@/lib/prisma";
export { POST , GET};
export { POST, GET };
async function POST(request: Request) {
const { data } = await request.json();
@@ -31,60 +33,127 @@ async function POST(request: Request) {
}
async function GET(request: Request) {
let fixData;
const { searchParams } = new URL(request.url);
const authorId = searchParams.get("authorId");
const search = searchParams.get("search");
try {
const data = await prisma.forum_Posting.findMany({
orderBy: {
createdAt: "desc",
},
where: {
isActive: true,
diskusi: {
mode: "insensitive",
contains: search || "",
},
},
select: {
id: true,
diskusi: true,
createdAt: true,
isActive: true,
authorId: true,
Author: {
select: {
id: true,
username: true,
Profile: {
select: {
id: true,
name: true,
imageId: true,
if (authorId) {
const data = await prisma.forum_Posting.findMany({
orderBy: {
createdAt: "desc",
},
where: {
isActive: true,
authorId: authorId,
},
select: {
id: true,
diskusi: true,
createdAt: true,
isActive: true,
authorId: true,
Author: {
select: {
id: true,
username: true,
Profile: {
select: {
id: true,
name: true,
imageId: true,
},
},
},
},
Forum_Komentar: {
where: {
isActive: true,
},
},
ForumMaster_StatusPosting: {
select: {
id: true,
status: true,
},
},
forumMaster_StatusPostingId: true,
},
Forum_Komentar: {
where: {
isActive: true,
});
const newData = data.map((item) => {
const count = item.Forum_Komentar?.length ?? 0;
return {
..._.omit(item, ["Forum_Komentar"]),
count,
};
});
fixData = newData;
} else {
const data = await prisma.forum_Posting.findMany({
orderBy: {
createdAt: "desc",
},
where: {
isActive: true,
diskusi: {
mode: "insensitive",
contains: search || "",
},
},
ForumMaster_StatusPosting: {
select: {
id: true,
status: true,
select: {
id: true,
diskusi: true,
createdAt: true,
isActive: true,
authorId: true,
Author: {
select: {
id: true,
username: true,
Profile: {
select: {
id: true,
name: true,
imageId: true,
},
},
},
},
Forum_Komentar: {
where: {
isActive: true,
},
},
ForumMaster_StatusPosting: {
select: {
id: true,
status: true,
},
},
forumMaster_StatusPostingId: true,
},
forumMaster_StatusPostingId: true,
},
});
});
const newData = data.map((item) => {
const count = item.Forum_Komentar?.length ?? 0;
return {
..._.omit(item, ["Forum_Komentar"]),
count,
};
});
fixData = newData;
}
return NextResponse.json({
success: true,
message: "Berhasil mendapatkan data",
data: data,
data: fixData,
});
} catch (error) {
console.log("[ERROR]", error);
return NextResponse.json({