Full app with AI campaign creation/copy/creative generation, dashboard, campaign automation engine, Meta OAuth login, and a redesigned landing page. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
67 lines
2.2 KiB
TypeScript
67 lines
2.2 KiB
TypeScript
import { NextRequest, NextResponse } from 'next/server';
|
|
import { DEFAULT_RULES } from '@/lib/engine/rules';
|
|
import type { AutomationRule } from '@/lib/engine/rules';
|
|
|
|
// In-memory store (replace with Supabase when configured)
|
|
let rules: AutomationRule[] = DEFAULT_RULES.map((r, i) => ({
|
|
...r,
|
|
id: `rule-${i + 1}`,
|
|
created_at: new Date().toISOString(),
|
|
updated_at: new Date().toISOString(),
|
|
}));
|
|
|
|
export async function GET() {
|
|
return NextResponse.json({ success: true, data: rules });
|
|
}
|
|
|
|
export async function POST(request: NextRequest) {
|
|
try {
|
|
const body = await request.json();
|
|
const newRule: AutomationRule = {
|
|
...body,
|
|
id: `rule-${Date.now()}`,
|
|
created_at: new Date().toISOString(),
|
|
updated_at: new Date().toISOString(),
|
|
};
|
|
rules.push(newRule);
|
|
return NextResponse.json({ success: true, data: newRule }, { status: 201 });
|
|
} catch (error) {
|
|
return NextResponse.json(
|
|
{ success: false, error: error instanceof Error ? error.message : 'Invalid data' },
|
|
{ status: 400 }
|
|
);
|
|
}
|
|
}
|
|
|
|
export async function PATCH(request: NextRequest) {
|
|
try {
|
|
const body = await request.json();
|
|
const { id, ...updates } = body;
|
|
const index = rules.findIndex((r) => r.id === id);
|
|
if (index === -1) {
|
|
return NextResponse.json({ success: false, error: 'Rule not found' }, { status: 404 });
|
|
}
|
|
rules[index] = { ...rules[index], ...updates, updated_at: new Date().toISOString() };
|
|
return NextResponse.json({ success: true, data: rules[index] });
|
|
} catch (error) {
|
|
return NextResponse.json(
|
|
{ success: false, error: error instanceof Error ? error.message : 'Invalid data' },
|
|
{ status: 400 }
|
|
);
|
|
}
|
|
}
|
|
|
|
export async function DELETE(request: NextRequest) {
|
|
try {
|
|
const { searchParams } = request.nextUrl;
|
|
const id = searchParams.get('id');
|
|
if (!id) return NextResponse.json({ success: false, error: 'ID required' }, { status: 400 });
|
|
rules = rules.filter((r) => r.id !== id);
|
|
return NextResponse.json({ success: true });
|
|
} catch (error) {
|
|
return NextResponse.json(
|
|
{ success: false, error: error instanceof Error ? error.message : 'Error' },
|
|
{ status: 500 }
|
|
);
|
|
}
|
|
}
|