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
|
in.Quality = a.cfg.DefaultQuality
|
||||||
}
|
}
|
||||||
var existing Task
|
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)
|
c.JSON(200, existing)
|
||||||
return
|
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"}
|
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 {
|
if err := a.db.Create(&t).Error; err != nil {
|
||||||
c.JSON(500, gin.H{"error": err.Error()})
|
c.JSON(500, gin.H{"error": err.Error()})
|
||||||
|
|||||||
Reference in New Issue
Block a user