100kmph/app/api/admin/jobs/route.ts
2025-11-06 01:24:38 +05:30

72 lines
1.8 KiB
TypeScript

import { NextResponse } from 'next/server';
import { supabaseAdmin } from '@/lib/supabase';
// POST /api/admin/jobs - Create a new job (ServiceRecord)
export async function POST(request: Request) {
try {
const body = await request.json();
const { vehicleId, metadata, mileage } = body;
// Create the ServiceRecord (status defaults to 0 = pending)
const { data: serviceRecord, error: recordError } = await supabaseAdmin
.from('ServiceRecords')
.insert({
vehicle: vehicleId,
metadata: metadata || null,
mileage: mileage || null,
status: 0, // Pending
})
.select()
.single();
if (recordError) {
console.error('Supabase error creating ServiceRecord:', recordError);
return NextResponse.json(
{ error: 'Failed to create service record', details: recordError.message },
{ status: 500 }
);
}
return NextResponse.json(
{ message: 'Job created successfully', serviceRecord },
{ status: 201 }
);
} catch (error) {
console.error('Error creating job:', error);
return NextResponse.json(
{ error: 'Failed to create job' },
{ status: 500 }
);
}
}
// GET /api/admin/jobs - Get all jobs
export async function GET() {
try {
const { data, error } = await supabaseAdmin
.from('ServiceRecords')
.select(`
*,
Vehicles (*)
`)
.order('created_at', { ascending: false });
if (error) {
console.error('Supabase error:', error);
return NextResponse.json(
{ error: 'Failed to fetch jobs', details: error.message },
{ status: 500 }
);
}
return NextResponse.json(data || []);
} catch (error) {
console.error('Error fetching jobs:', error);
return NextResponse.json(
{ error: 'Failed to fetch jobs' },
{ status: 500 }
);
}
}