fix: reliably deduplicate queued downloads
This commit is contained in:
@@ -150,10 +150,13 @@ func (a *App) addTask(c *gin.Context) {
|
||||
in.Quality = a.cfg.DefaultQuality
|
||||
}
|
||||
var existing Task
|
||||
if a.db.Where("source = ? AND rid = ? AND quality = ? AND status IN ?", in.Source, in.RID, in.Quality, []string{"pending", "resolving", "downloading", "uploading", "done"}).First(&existing).Error == nil {
|
||||
err := a.db.Where("source = ? AND rid = ? AND quality = ?", in.Source, in.RID, in.Quality).Order("id desc").First(&existing).Error
|
||||
if err == nil {
|
||||
if existing.Status != "error" {
|
||||
c.JSON(200, existing)
|
||||
return
|
||||
}
|
||||
}
|
||||
t := Task{Source: in.Source, RID: in.RID, Title: in.Title, Artist: in.Artist, Album: in.Album, Pic: in.Pic, Quality: in.Quality, Status: "pending"}
|
||||
if err := a.db.Create(&t).Error; err != nil {
|
||||
c.JSON(500, gin.H{"error": err.Error()})
|
||||
|
||||
Reference in New Issue
Block a user