2026-04-13 17:31:26 +05:30

56 lines
1.3 KiB
JavaScript

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;