Detail and List card update
This commit is contained in:
@@ -10,7 +10,19 @@ router.use(authMiddleware);
|
||||
|
||||
router.get("/", async (_req, res) => {
|
||||
const jobs = await Job.find().sort({ createdAt: -1 }).lean();
|
||||
res.json(jobs);
|
||||
const counts = await JobRun.aggregate([
|
||||
{ $group: { _id: "$job", runCount: { $sum: 1 } } }
|
||||
]);
|
||||
const countMap = counts.reduce<Record<string, number>>((acc, item) => {
|
||||
acc[item._id.toString()] = item.runCount;
|
||||
return acc;
|
||||
}, {});
|
||||
res.json(
|
||||
jobs.map((job) => ({
|
||||
...job,
|
||||
runCount: countMap[job._id.toString()] || 0
|
||||
}))
|
||||
);
|
||||
});
|
||||
|
||||
router.get("/:id", async (req, res) => {
|
||||
|
||||
@@ -92,14 +92,16 @@ class JobService {
|
||||
this.io = io;
|
||||
}
|
||||
|
||||
private emitStatus(jobId: string, payload: Partial<JobDocument>) {
|
||||
private async emitStatus(jobId: string, payload: Partial<JobDocument>) {
|
||||
if (!this.io) return;
|
||||
const runCount = await JobRun.countDocuments({ job: jobId });
|
||||
const body = {
|
||||
jobId,
|
||||
status: payload.status,
|
||||
lastRunAt: payload.lastRunAt,
|
||||
lastDurationMs: payload.lastDurationMs,
|
||||
lastMessage: payload.lastMessage
|
||||
lastMessage: payload.lastMessage,
|
||||
runCount
|
||||
};
|
||||
this.io.to(`job:${jobId}`).emit("job:status", body);
|
||||
this.io.emit("job:status", body);
|
||||
@@ -130,7 +132,7 @@ class JobService {
|
||||
});
|
||||
|
||||
await Job.findByIdAndUpdate(jobId, { status: "running", lastMessage: "Çalıştırılıyor..." });
|
||||
this.emitStatus(jobId, { status: "running", lastMessage: "Çalıştırılıyor..." } as JobDocument);
|
||||
await this.emitStatus(jobId, { status: "running", lastMessage: "Çalıştırılıyor..." } as JobDocument);
|
||||
|
||||
try {
|
||||
const repoDir = await cloneOrPull(job, (line) => pushLog(line));
|
||||
@@ -151,7 +153,7 @@ class JobService {
|
||||
durationMs: duration,
|
||||
logs: runLogs
|
||||
});
|
||||
this.emitStatus(jobId, {
|
||||
await this.emitStatus(jobId, {
|
||||
status: "success",
|
||||
lastRunAt: new Date(),
|
||||
lastDurationMs: duration,
|
||||
@@ -172,7 +174,7 @@ class JobService {
|
||||
logs: runLogs
|
||||
});
|
||||
pushLog(`Hata: ${(err as Error).message}`);
|
||||
this.emitStatus(jobId, {
|
||||
await this.emitStatus(jobId, {
|
||||
status: "failed",
|
||||
lastRunAt: new Date(),
|
||||
lastDurationMs: duration,
|
||||
|
||||
Reference in New Issue
Block a user