diff --git a/models.go b/models.go index fd8ce76..a388581 100644 --- a/models.go +++ b/models.go @@ -19,6 +19,7 @@ const ( Downloading OriginalStatus = "downloading" DownloadCompleted OriginalStatus = "download completed" Transcoding OriginalStatus = "transcoding" + Completed OriginalStatus = "completed" Failed OriginalStatus = "failed" ) diff --git a/templates/videos.html b/templates/videos.html index cdb1e34..ec54135 100644 --- a/templates/videos.html +++ b/templates/videos.html @@ -18,7 +18,7 @@ {{range .videos}}
- {{if eq .Status "completed"}} + {{if or (eq .Status "download completed") (eq .Status "transcoding") (eq .Status "completed")}} {{.Title}} {{else}} {{.Title}} diff --git a/workers.go b/workers.go index 173a31e..767ce82 100644 --- a/workers.go +++ b/workers.go @@ -215,6 +215,34 @@ func transcodePending() { // loop until no more pending jobs for { + + var originalsToUpdate []uint + + // find any originals with a transcode job and mark them as transcoding + db.Debug().Model(&Original{}). + Select("id"). + Where("id IN (?)", + db.Model(&Transcode{}). + Select("original_id"), + ). + Find(&originalsToUpdate) + db.Debug().Model(&Original{}). + Where("id IN ?", originalsToUpdate). + Update("status", Transcoding) + + // originals marked transcoding that don't have a transcode job -> complete + db.Debug().Model(&Original{}). + Select("id"). + Where("status = ? AND id NOT IN (?)", + Transcoding, + db.Model(&Transcode{}). + Select("original_id"), + ). + Find(&originalsToUpdate) + db.Debug().Model(&Original{}). + Where("id IN ? AND status = ?", originalsToUpdate, Transcoding). + Update("status", Completed) + var trans Transcode err := db.Where("status = ?", "pending"). Order("CASE " +