Web2App / controllers /jobController.js
fikxzmodzz's picture
Create controllers/jobController.js
89fd6fd verified
Raw
History Blame Contribute Delete
1.48 kB
const builderService = require("../services/builderService");
const crypto = require("crypto");
const jobs = new Map();
const createJob = async (req, res) => {
const { url, name, packageName, iconUrl } = req.body;
if (!url || !name || !packageName) {
return res.status(400).json({
status: false,
message: "missing required parameters"
});
}
const jobId = crypto.randomBytes(8).toString("hex");
const jobData = {
jobId,
url,
name,
packageName,
iconUrl,
status: "queue",
createdAt: new Date().toISOString()
};
jobs.set(jobId, jobData);
builderService.processApk(jobId, jobData, (result) => {
jobs.set(jobId, { ...jobs.get(jobId), ...result });
});
res.json({
status: true,
message: "job created successfully",
data: { jobId }
});
};
const checkJob = (req, res) => {
const { jobId } = req.params;
const job = jobs.get(jobId);
if (!job) {
return res.status(404).json({ status: false, message: "job id not found" });
}
res.json({
status: true,
data: {
jobId: job.jobId,
status: job.status,
progress: job.progress || "0%"
}
});
};
const infoJob = (req, res) => {
const { jobId } = req.params;
const job = jobs.get(jobId);
if (!job) {
return res.status(404).json({ status: false, message: "job id not found" });
}
res.json({
status: true,
data: job
});
};
module.exports = {
createJob,
checkJob,
infoJob
};