BlueFin / backend /src /services /jobService.js
vedanshmadan21's picture
Deploy Intelli-Credit to HuggingFace Spaces
7f6dd09
import { v4 as uuidv4 } from "uuid";
import supabase from "../lib/supabase.js";
async function createJob(companyName, userEmail) {
const { data, error } = await supabase
.from("jobs")
.insert({
id: uuidv4(),
company_name: companyName,
status: "pending",
user_email: userEmail || null,
})
.select()
.single();
if (error) throw new Error(error.message);
return data;
}
async function getJob(jobId) {
const { data: job, error: jobError } = await supabase
.from("jobs")
.select("*")
.eq("id", jobId)
.single();
if (jobError || !job) return null;
const { data: files } = await supabase
.from("uploaded_files")
.select("*")
.eq("job_id", jobId);
return { ...job, files: files || [] };
}
async function updateJobStatus(jobId, status, result) {
const update = { status, updated_at: new Date().toISOString() };
if (result !== null && result !== undefined) update.result = result;
const { error } = await supabase.from("jobs").update(update).eq("id", jobId);
if (error) throw new Error(error.message);
}
async function listJobs() {
const { data, error } = await supabase
.from("jobs")
.select("*")
.order("created_at", { ascending: false })
.limit(20);
if (error) throw new Error(error.message);
return data || [];
}
export { createJob, getJob, updateJobStatus, listJobs };