51 lignes
1,6 Kio
Go
51 lignes
1,6 Kio
Go
package torrents
|
|
|
|
import (
|
|
"errors"
|
|
"github.com/NyaaPantsu/nyaa/util/log"
|
|
"net/http"
|
|
|
|
"github.com/NyaaPantsu/nyaa/models"
|
|
)
|
|
|
|
// DeleteTorrent : delete a torrent based on id
|
|
func DeleteTorrent(id uint) (*models.Torrent, int, error) {
|
|
var torrent models.Torrent
|
|
if models.ORM.First(&torrent, id).RecordNotFound() {
|
|
return &torrent, http.StatusNotFound, errors.New("Torrent is not found")
|
|
}
|
|
if models.ORM.Delete(&torrent).Error != nil {
|
|
return &torrent, http.StatusInternalServerError, errors.New("Torrent was not deleted")
|
|
}
|
|
|
|
if models.ElasticSearchClient != nil {
|
|
err := torrent.DeleteFromESIndex(models.ElasticSearchClient)
|
|
if err == nil {
|
|
log.Infof("Successfully deleted torrent to ES index.")
|
|
} else {
|
|
log.Errorf("Unable to delete torrent to ES index: %s", err)
|
|
}
|
|
}
|
|
return &torrent, http.StatusOK, nil
|
|
}
|
|
|
|
// DefinitelyDelete : deletes definitely a torrent based on id
|
|
func DefinitelyDelete(id uint) (*models.Torrent, int, error) {
|
|
var torrent models.Torrent
|
|
if models.ORM.Unscoped().Model(&torrent).First(&torrent, id).RecordNotFound() {
|
|
return &torrent, http.StatusNotFound, errors.New("Torrent is not found")
|
|
}
|
|
if models.ORM.Unscoped().Model(&torrent).Delete(&torrent).Error != nil {
|
|
return &torrent, http.StatusInternalServerError, errors.New("Torrent was not deleted")
|
|
}
|
|
|
|
if models.ElasticSearchClient != nil {
|
|
err := torrent.DeleteFromESIndex(models.ElasticSearchClient)
|
|
if err == nil {
|
|
log.Infof("Successfully deleted torrent to ES index.")
|
|
} else {
|
|
log.Errorf("Unable to delete torrent to ES index: %s", err)
|
|
}
|
|
}
|
|
return &torrent, http.StatusOK, nil
|
|
}
|