import { NextRequest, NextResponse } from "next/server"; import { initDB } from "@/utils/init-db"; import { AppDataSource } from "@/utils/data-source"; import { Sku } from "@/entities/Sku"; export async function GET(req: NextRequest) { await initDB(); const repo = AppDataSource.getRepository(Sku); const { searchParams } = new URL(req.url); const page = Number(searchParams.get("page") || 1); const limit = Number(searchParams.get("limit") || 10); const search = searchParams.get("search")?.trim() || ""; const skip = (page - 1) * limit; const queryBuilder = repo.createQueryBuilder("sku"); if (search) { queryBuilder.where("sku.sku LIKE :search", { search: `%${search}%` }); } queryBuilder .select([ "sku.id", "sku.sku", "sku.normalized_title", "sku.normalized_short_description", "sku.status", "sku.normalized_html", ]) .orderBy("sku.created_at", "DESC") .addOrderBy("sku.id", "DESC") // <--- quan trọng, tránh trùng record .skip(skip) .take(limit); const [data, total] = await queryBuilder.getManyAndCount(); return NextResponse.json({ data, pagination: { total, page, limit, totalPages: Math.ceil(total / limit), }, }); } export async function PUT(req: NextRequest) { await initDB(); const body = await req.json(); const repo = AppDataSource.getRepository(Sku); const sku = await repo.findOneBy({ id: body.id }); if (!sku) return NextResponse.json({ error: "Not found" }, { status: 404 }); const result = await repo.update({ id: sku.id }, { ...body }); if (!result) return NextResponse.json( { error: "Can't update " + sku.sku }, { status: 400 } ); return NextResponse.json({ error: false, message: `Updated ${sku.sku} success`, }); }