25 lines
992 B
TypeScript
25 lines
992 B
TypeScript
import { NextResponse } from 'next/server';
|
|
import db from '@/lib/db';
|
|
|
|
export const dynamic = 'force-dynamic';
|
|
|
|
export async function GET() {
|
|
const counters = db.prepare('SELECT * FROM counters ORDER BY order_index ASC, id ASC').all();
|
|
return NextResponse.json(counters);
|
|
}
|
|
|
|
export async function POST(request: Request) {
|
|
const { name, value = 0, group_id = null, image_path = null } = await request.json();
|
|
if (!name?.trim()) {
|
|
return NextResponse.json({ error: 'Name is required' }, { status: 400 });
|
|
}
|
|
const maxOrder = (db.prepare(
|
|
'SELECT COALESCE(MAX(order_index), -1) AS m FROM counters'
|
|
).get() as { m: number }).m;
|
|
const result = db.prepare(
|
|
'INSERT INTO counters (name, value, group_id, image_path, order_index) VALUES (?, ?, ?, ?, ?)'
|
|
).run(name.trim(), value, group_id, image_path, maxOrder + 1);
|
|
const counter = db.prepare('SELECT * FROM counters WHERE id = ?').get(result.lastInsertRowid);
|
|
return NextResponse.json(counter, { status: 201 });
|
|
}
|