- {{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 " +