Delete job: cascade delete povsod (Nextcloud + dedup DB + S3 + lokal)
PROBLEM: '✕' gumb je do zdaj brisal samo lokalne fajle + S3, ampak
NE Nextcloud upload (rel je ostal na folxspeed/REELS/{TV}/) in NE
dedup DB zapis (zato se enaka pesem ni mogla več upload-ati).
NEW BACKEND:
- _nextcloud_delete(filename, target_subdir) helper preko WebDAV DELETE
(404 šteje kot success — če že ne obstaja, OK)
- delete_job() razširjen:
1. Nextcloud delete (če nextcloud_status='uploaded' ali ima nextcloud_url)
2. Dedup DB remove (processed_videos zapis za tisto TV postajo)
3. Lokal + S3 delete vseh workfile-ov (kot prej)
4. Glob za yt-dlp artifacte ({job_id}_yt*) — info.json, .part, .f137.mp4
5. Job metadata
- Response: {deleted, nextcloud_delete: 'ok'|'not_found'|'fail: msg', nextcloud_filename}
NEW FRONTEND:
- buildJobEl() doda data-nc-status atribut na kartico
- deleteJob() bere dataset.ncStatus za Nextcloud info
- Confirm dialog detail razložen seznam KAJ se zbriše + opozorilo če Nextcloud
- Če Nextcloud delete ni uspel po API klicu, alert
This commit is contained in:
+16
-2
@@ -1224,6 +1224,7 @@
|
||||
el.className = "job";
|
||||
el.id = `job-${job.id}`;
|
||||
el.dataset.id = job.id;
|
||||
if (job.nextcloud_status) el.dataset.ncStatus = job.nextcloud_status;
|
||||
|
||||
// Vizualni hint če je že naložen na Nextcloud
|
||||
if (job.nextcloud_status === "uploaded") {
|
||||
@@ -1360,8 +1361,21 @@
|
||||
}
|
||||
|
||||
async function deleteJob(id) {
|
||||
if (!confirm("Izbrišem ta job?")) return;
|
||||
await fetch(`/api/jobs/${id}`, { method: "DELETE" });
|
||||
// Najdi job v listu da lahko prikažem ime + Nextcloud status
|
||||
const card = document.getElementById(`job-${id}`);
|
||||
const title = card ? (card.querySelector(".job-title")?.textContent || id) : id;
|
||||
const isUploaded = card && card.dataset.ncStatus === "uploaded";
|
||||
const ncWarn = isUploaded
|
||||
? "\n\n☁ POZOR: ta rel je bil naložen na Nextcloud — bo zbrisan tudi tam (in iz dedup DB)."
|
||||
: "";
|
||||
if (!confirm(`Izbrišem ta job?\n\n"${title}"${ncWarn}\n\nTo zbriše:\n• job iz seznama\n• video + podnapisi (lokal + S3)\n• YouTube original\n• analizo + waveform${isUploaded ? "\n• datoteko iz Nextclouda\n• zapis iz dedup DB (lahko boš ga ponovno naložil)" : ""}`)) return;
|
||||
const r = await fetch(`/api/jobs/${id}`, { method: "DELETE" });
|
||||
if (r.ok) {
|
||||
const data = await r.json().catch(() => ({}));
|
||||
if (data.nextcloud_delete && data.nextcloud_delete.startsWith("fail")) {
|
||||
alert(`Job zbrisan, ampak Nextcloud delete ni uspel:\n${data.nextcloud_delete}`);
|
||||
}
|
||||
}
|
||||
refreshJobs();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user