70 lines
1.8 KiB
TypeScript
70 lines
1.8 KiB
TypeScript
import { NextResponse } from 'next/server';
|
|
import { supabaseAdmin } from '@/lib/supabase';
|
|
|
|
// POST /api/admin/vehicles - Create a new vehicle
|
|
export async function POST(request: Request) {
|
|
try {
|
|
const body = await request.json();
|
|
const { id, make, model, capacity, yom, owner } = body;
|
|
|
|
const { data, error } = await supabaseAdmin
|
|
.from('Vehicles')
|
|
.insert({
|
|
id: typeof id === 'string' ? id.toUpperCase() : id,
|
|
make: make || 'tvs',
|
|
model: model || 'rtr 200',
|
|
capacity: capacity || 200,
|
|
yom: yom || new Date().getFullYear(),
|
|
owner: owner || null,
|
|
})
|
|
.select()
|
|
.single();
|
|
|
|
if (error) {
|
|
console.error('Supabase error:', error);
|
|
return NextResponse.json(
|
|
{ error: 'Failed to create vehicle', details: error.message },
|
|
{ status: 500 }
|
|
);
|
|
}
|
|
|
|
return NextResponse.json(
|
|
{ message: 'Vehicle created successfully', vehicle: data },
|
|
{ status: 201 }
|
|
);
|
|
} catch (error) {
|
|
console.error('Error creating vehicle:', error);
|
|
return NextResponse.json(
|
|
{ error: 'Failed to create vehicle' },
|
|
{ status: 500 }
|
|
);
|
|
}
|
|
}
|
|
|
|
// GET /api/admin/vehicles - Get all vehicles
|
|
export async function GET() {
|
|
try {
|
|
const { data, error } = await supabaseAdmin
|
|
.from('Vehicles')
|
|
.select('*')
|
|
.order('registered_at', { ascending: false });
|
|
|
|
if (error) {
|
|
console.error('Supabase error:', error);
|
|
return NextResponse.json(
|
|
{ error: 'Failed to fetch vehicles', details: error.message },
|
|
{ status: 500 }
|
|
);
|
|
}
|
|
|
|
return NextResponse.json(data || []);
|
|
} catch (error) {
|
|
console.error('Error fetching vehicles:', error);
|
|
return NextResponse.json(
|
|
{ error: 'Failed to fetch vehicles' },
|
|
{ status: 500 }
|
|
);
|
|
}
|
|
}
|
|
|