const express = require("express"); const { createJob, updateJob, getJob, listJobs, canStartJob } = require("../src/pipelineJobs"); const { runKytPipelineJob } = require("../src/runKytPipelineJob"); const { getToken } = require("../tokenStore"); const router = express.Router(); router.post("/run", async (req, res) => { const { shop, limit = null } = req.body || {}; if (!shop) { return res.status(400).json({ error: "Missing shop." }); } if (!getToken(shop)) { return res.status(400).json({ error: "No stored Shopify token found for this shop. Complete app auth first." }); } if (!canStartJob(shop)) { return res.status(409).json({ error: `A KYT pipeline job is already running for ${shop}.` }); } const job = createJob({ shop, limit }); updateJob(job.id, { status: "queued", step: "queued", detail: "Job queued", }); setImmediate(() => { runKytPipelineJob(job); }); return res.json({ jobId: job.id, status: "queued", shop, limit, }); }); router.get("/status/:jobId", (req, res) => { const job = getJob(req.params.jobId); if (!job) { return res.status(404).json({ error: "Job not found." }); } return res.json(job); }); router.get("/jobs", (req, res) => { return res.json({ jobs: listJobs() }); }); module.exports = router;