diff options
| author | Rafi Zadanly <zadanlyr@gmail.com> | 2023-11-09 15:40:16 +0700 |
|---|---|---|
| committer | Rafi Zadanly <zadanlyr@gmail.com> | 2023-11-09 15:40:16 +0700 |
| commit | be0f537dc4fe384eef09436833c6407e6482c16d (patch) | |
| tree | 194b1ad3f34396cb8149075bbbd38b854aedf361 /src/app/api/product/route.tsx | |
| parent | 5d5401ae36e7e0c8eb38ccd943c1aa44a9573d35 (diff) | |
Initial commit
Diffstat (limited to 'src/app/api/product/route.tsx')
| -rw-r--r-- | src/app/api/product/route.tsx | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/app/api/product/route.tsx b/src/app/api/product/route.tsx new file mode 100644 index 0000000..1161a4e --- /dev/null +++ b/src/app/api/product/route.tsx @@ -0,0 +1,48 @@ +import { NextRequest, NextResponse } from "next/server"; +import { prisma } from "prisma/client"; +import { Credential } from "@/common/types/auth" + +export async function GET(request: NextRequest) { + const PAGE_SIZE = 30; + + const searchParams = request.nextUrl.searchParams; + const type = searchParams.get('type') + const search = searchParams.get('search'); + const page = searchParams.get('page'); + const intPage: number = page ? parseInt(page) : 1; + + const credentialStr = request.cookies.get('credential')?.value + const credential: Credential | null = credentialStr ? JSON.parse(credentialStr) : null + + if (!credential) { + return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }) + } + + const { companyId } = credential + + const where = { + AND: { + OR: [ + { name: { contains: search ?? '' } }, + { barcode: { contains: search ?? '' } }, + { itemCode: { contains: search ?? '' } }, + ], + companyId: type == 'all' ? undefined : companyId + } + } + + const products = await prisma.product.findMany({ + where, + include: { company: true }, + take: PAGE_SIZE, + skip: (intPage - 1) * PAGE_SIZE + }) + + const count = await prisma.product.count({ where }) + const pagination = { + page: intPage, + totalPage: Math.ceil(count / PAGE_SIZE), + } + + return NextResponse.json({ products, ...pagination }) +}
\ No newline at end of file |
