import type { NextRequest, NextResponse } from 'next/server'; import { STATUS, response, handleError } from 'src/utils/response'; import { listUsers, deleteUser, updateUser, createNewUser } from 'src/app/services/user-item.service'; // import prisma from '../../lib/prisma'; export async function GET(req: NextRequest, res: NextResponse) { try { const result = await listUsers(); return response(result, STATUS.OK); } catch (error) { return handleError('User - Get latest', error); } } /** *************************************** * POST - create User *************************************** */ export async function POST(req: NextRequest) { const OPERATION = 'User - Create'; const { data } = await req.json(); try { // TODO: temporary ignore output from function due to `createNewUser` is still a dummy // const createResult = await createNewUser(data); await createNewUser(data); return response(OPERATION, STATUS.OK); } catch (error) { return handleError(OPERATION, error); } } /** *************************************** * PUT - update User *************************************** */ export async function PUT(req: NextRequest) { const { searchParams } = req.nextUrl; const userId = searchParams.get('userId'); const { data } = await req.json(); try { if (!userId) throw new Error('userId cannot null'); const id: number = parseInt(userId); const updateResult = await updateUser(id.toString(), data); return response(updateResult, STATUS.OK); } catch (error) { return handleError('User - Update', error); } } /** *************************************** * DELETE - update User *************************************** */ export async function DELETE(req: NextRequest) { const { searchParams } = req.nextUrl; const userId = searchParams.get('userId'); const { data } = await req.json(); try { if (!userId) throw new Error('userId cannot null'); const id: number = parseInt(userId); await deleteUser(id); return response('User - Delete', STATUS.OK); } catch (error) { return handleError('User - Delete', error); } }