tg-tracker / src /app /api /patterns /route.ts
iq7se2's picture
Upload 102 files
e03f82d verified
Raw History Blame Contribute Delete
1.32 kB
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 });
}