api : add api

Deskripsi:
- add gorup
- add position
- village

No issue
This commit is contained in:
lukman
2024-07-25 16:43:13 +08:00
parent 404734c8f6
commit 3af192313a
33 changed files with 670 additions and 3 deletions

View File

@@ -0,0 +1,13 @@
import { API_INDEX_GROUP } from "./api_index";
type Method = "GET" | "POST";
export async function apiGroup(req: Request, method: Method) {
const { searchParams } = new URL(req.url);
const path = searchParams.get("path");
const act = API_INDEX_GROUP.find((v) => v.path === path && v.method === method);
if (!path)
return Response.json({ message: "page not found" }, { status: 404 });
if (act) return act.bin(req);
return Response.json({ message: "404" });
}

View File

@@ -0,0 +1,33 @@
import { getOneGroup } from "./get/getOneGroup";
import { listGroup } from "./get/listGroup";
import { createGroup } from "./post/createGroup";
import { deleteGroup } from "./post/deleteGroup";
import { updateGroup } from "./post/updateGroup";
export const API_INDEX_GROUP = [
{
path: "list-group",
method: "GET",
bin: listGroup,
},
{
path: "create-group",
method: "POST",
bin: createGroup,
},
{
path: "update-group",
method: "POST",
bin: updateGroup,
},
{
path: "delete-group",
method: "POST",
bin: deleteGroup,
},
{
path: "get-one-group",
method: "GET",
bin: getOneGroup,
},
];

View File

@@ -0,0 +1,32 @@
import { prisma } from "@/module/_global";
export async function getOneGroup(req: Request): Promise<Response> {
try {
// const groupId = req.params.id;
const groupId = "clz0v4kce0009e6mukfhzmyzb";
const getOne = await prisma.group.findUnique({
where: {
id: groupId,
},
select: {
id: true,
name: true,
},
});
if (!getOne) {
return Response.json(
{ message: "Grup tidak ditemukan", success: false },
{ status: 404 }
);
}
return Response.json(getOne);
} catch (error) {
console.error(error);
return Response.json(
{ message: "Internal Server Error", success: false },
{ status: 500 }
);
}
}

View File

@@ -0,0 +1,20 @@
import { prisma } from "@/module/_global";
export async function listGroup(req: Request): Promise<Response> {
try {
const groups = await prisma.group.findMany({
where: {
isActive: true,
},
select: {
id: true,
name: true,
},
});
return Response.json(groups);
} catch (error) {
console.error(error);
return Response.json({ message: "Internal Server Error" }, { status: 500 });
}
}

View File

@@ -0,0 +1,32 @@
import { prisma } from "@/module/_global";
export async function createGroup(req: Request){
try {
const data = await req.json();
if (!data || !data.name) {
return Response.json(
{ message: "Nama grup harus diisi" },
{ status: 400 }
);
}
const group = await prisma.group.create({
data: {
name: data.name,
isActive: true,
idVillage: data.idVillage,
},
select: {
id: true,
name: true,
},
});
return Response.json(group, { status: 201 });
} catch (error) {
console.error(error);
return Response.json({ message: "Internal Server Error" }, { status: 500 });
}
}

View File

@@ -0,0 +1,19 @@
import { prisma } from "@/module/_global";
export async function deleteGroup(req: Request) {
try {
const data = await req.json();
const update = await prisma.group.update({
where: {
id: data.id,
},
data: {
isActive: false,
},
});
return Response.json({ success: true, message: "Sukses Delete Grup" }, { status: 200 });
} catch (error) {
console.error(error);
return Response.json({ message: "Internal Server Error", success: false }, { status: 500 });
}
}

View File

@@ -0,0 +1,21 @@
import { prisma } from "@/module/_global";
export async function updateGroup(req: Request) {
try {
const data = await req.json();
const update = await prisma.group.update({
where: {
id: data.id,
},
data: {
name: data.name,
idVillage: data.idVillage,
},
});
return Response.json({ success: true, message: "Sukses Update Grup" }, { status: 200 });
} catch (error) {
console.error(error);
return Response.json({ message: "Internal Server Error", success: false }, { status: 500 });
}
}

View File

@@ -1,3 +1,5 @@
import { apiGroup } from "./api/api_group";
import ViewGroup from "./view/view_group";
export {ViewGroup}
export { ViewGroup };
export { apiGroup };