From a7921ffffb0592866216e871e0203deed01e2716 Mon Sep 17 00:00:00 2001 From: Esdras Renan Date: Mon, 10 Nov 2025 02:47:36 -0300 Subject: [PATCH] fix: use Next RouteContext helpers for dynamic API routes --- .../api/admin/devices/[id]/inventory.xlsx/route.ts | 11 ++++------- src/app/api/reports/schedules/[id]/route.ts | 11 ++++++----- src/app/api/reports/schedules/runs/[id]/route.ts | 8 ++++++-- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/app/api/admin/devices/[id]/inventory.xlsx/route.ts b/src/app/api/admin/devices/[id]/inventory.xlsx/route.ts index f27e369..7b4bc0f 100644 --- a/src/app/api/admin/devices/[id]/inventory.xlsx/route.ts +++ b/src/app/api/admin/devices/[id]/inventory.xlsx/route.ts @@ -1,3 +1,4 @@ +import type { NextRequest } from "next/server" import { NextResponse } from "next/server" import { ConvexHttpClient } from "convex/browser" @@ -10,18 +11,14 @@ import { buildMachinesInventoryWorkbook, type MachineInventoryRecord } from "@/s export const runtime = "nodejs" -type RouteContext = { - params: Promise<{ - id: string - }> -} +type Ctx = RouteContext<"/api/admin/devices/[id]/inventory.xlsx"> function sanitizeFilename(hostname: string, fallback: string): string { const safe = hostname.replace(/[^a-z0-9_-]/gi, "-").replace(/-{2,}/g, "-").toLowerCase() return safe || fallback } -export async function GET(_request: Request, context: RouteContext) { +export async function GET(request: NextRequest, ctx: Ctx) { const session = await assertAuthenticatedSession() if (!session) return NextResponse.json({ error: "Não autorizado" }, { status: 401 }) @@ -30,7 +27,7 @@ export async function GET(_request: Request, context: RouteContext) { return NextResponse.json({ error: "Convex não configurado" }, { status: 500 }) } - const { id } = await context.params + const { id } = await ctx.params const machineId = id as Id<"machines"> const client = new ConvexHttpClient(convexUrl) const tenantId = session.user.tenantId ?? DEFAULT_TENANT_ID diff --git a/src/app/api/reports/schedules/[id]/route.ts b/src/app/api/reports/schedules/[id]/route.ts index d24999c..bd1d0d1 100644 --- a/src/app/api/reports/schedules/[id]/route.ts +++ b/src/app/api/reports/schedules/[id]/route.ts @@ -1,3 +1,4 @@ +import type { NextRequest } from "next/server" import { NextResponse } from "next/server" import { assertAdminSession } from "@/lib/auth-server" @@ -12,10 +13,10 @@ import { export const runtime = "nodejs" -type RouteContext = { params: Promise<{ id: string }> } +type Ctx = RouteContext<"/api/reports/schedules/[id]"> -export async function PATCH(request: Request, context: RouteContext) { - const { id } = await context.params +export async function PATCH(request: NextRequest, ctx: Ctx) { + const { id } = await ctx.params const session = await assertAdminSession() if (!session) { return NextResponse.json({ error: "Não autorizado" }, { status: 401 }) @@ -143,8 +144,8 @@ export async function PATCH(request: Request, context: RouteContext) { }) } -export async function DELETE(_: Request, context: RouteContext) { - const { id } = await context.params +export async function DELETE(_: NextRequest, ctx: Ctx) { + const { id } = await ctx.params const session = await assertAdminSession() if (!session) { return NextResponse.json({ error: "Não autorizado" }, { status: 401 }) diff --git a/src/app/api/reports/schedules/runs/[id]/route.ts b/src/app/api/reports/schedules/runs/[id]/route.ts index 37a623d..8f0d794 100644 --- a/src/app/api/reports/schedules/runs/[id]/route.ts +++ b/src/app/api/reports/schedules/runs/[id]/route.ts @@ -1,3 +1,4 @@ +import type { NextRequest } from "next/server" import { NextResponse } from "next/server" import { assertAdminSession } from "@/lib/auth-server" @@ -6,14 +7,17 @@ import { prisma } from "@/lib/prisma" export const runtime = "nodejs" -export async function GET(request: Request, { params }: { params: { id: string } }) { +type Ctx = RouteContext<"/api/reports/schedules/runs/[id]"> + +export async function GET(request: NextRequest, ctx: Ctx) { + const { id } = await ctx.params const session = await assertAdminSession() if (!session) { return NextResponse.json({ error: "Não autorizado" }, { status: 401 }) } const tenantId = session.user.tenantId ?? DEFAULT_TENANT_ID const run = await prisma.reportExportRun.findFirst({ - where: { id: params.id, tenantId }, + where: { id, tenantId }, }) if (!run || !run.artifacts) { return NextResponse.json({ error: "Arquivo não encontrado" }, { status: 404 })