Spaces:
Running
Running
Download src/app/api/patterns/route.ts from iq7se2/tg-tracker: direct link, hf CLI and curl.
- Browser
- Download file 1.32 kB
-
https://huggingface.co/spaces/iq7se2/tg-tracker/resolve/main/src/app/api/patterns/route.ts
- Command line
-
hf download hf://spaces/iq7se2/tg-tracker/src/app/api/patterns/route.ts
-
curl -L -o route.ts https://huggingface.co/spaces/iq7se2/tg-tracker/resolve/main/src/app/api/patterns/route.ts
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 }); | |
| } | |