import { NextRequest, NextResponse } from "next/server"; import { db } from "@/lib/db"; import { compilePattern } from "@/lib/pattern-engine"; export const dynamic = "force-dynamic"; // List all patterns export async function GET() { const patterns = await db.pattern.findMany({ orderBy: { createdAt: "desc" } }); return NextResponse.json({ patterns }); } // Create a new pattern export async function POST(req: NextRequest) { const body = await req.json().catch(() => ({})); const { name, expression, description, enabled } = body as { name?: string; expression?: string; description?: string; enabled?: boolean; }; if (!expression || typeof expression !== "string") { return NextResponse.json({ error: "expression is required" }, { status: 400 }); } const expr = expression.trim().toLowerCase(); let compiled; try { compiled = compilePattern(expr); } catch (e: any) { return NextResponse.json({ error: e?.message ?? "Invalid pattern" }, { status: 400 }); } const pattern = await db.pattern.create({ data: { name: (name?.trim() || expr), expression: expr, regex: compiled.regex, description: description?.trim() || null, enabled: enabled !== false, }, }); return NextResponse.json({ pattern }, { status: 201 }); }