mirror of
https://github.com/idanoo/autobrr
synced 2025-07-23 16:59:12 +00:00
fix(releases): delete older than X (#993)
* fix(release): DeleteOlder func for zero duration resolves a bug in the `DeleteOlder` function where recent 24-hour data wasn't deleted when set to `delete everything`. We now correctly set the olderThanTimestamp to a future date when duration is zero, ensuring complete deletion of all records. * fix(releases): delete older --------- Co-authored-by: ze0s <ze0s@riseup.net>
This commit is contained in:
parent
56d3603505
commit
e6f32596a1
6 changed files with 56 additions and 71 deletions
|
@ -19,8 +19,7 @@ type releaseService interface {
|
|||
FindRecent(ctx context.Context) (res []*domain.Release, err error)
|
||||
GetIndexerOptions(ctx context.Context) ([]string, error)
|
||||
Stats(ctx context.Context) (*domain.ReleaseStats, error)
|
||||
Delete(ctx context.Context) error
|
||||
DeleteOlder(ctx context.Context, duration int) error
|
||||
Delete(ctx context.Context, req *domain.DeleteReleaseRequest) error
|
||||
Retry(ctx context.Context, req *domain.ReleaseActionRetryReq) error
|
||||
}
|
||||
|
||||
|
@ -41,8 +40,7 @@ func (h releaseHandler) Routes(r chi.Router) {
|
|||
r.Get("/recent", h.findRecentReleases)
|
||||
r.Get("/stats", h.getStats)
|
||||
r.Get("/indexers", h.getIndexerOptions)
|
||||
r.Delete("/all", h.deleteReleases)
|
||||
r.Delete("/older-than/{duration}", h.deleteOlder)
|
||||
r.Delete("/", h.deleteReleases)
|
||||
|
||||
r.Route("/{releaseId}", func(r chi.Router) {
|
||||
r.Post("/actions/{actionStatusId}/retry", h.retryAction)
|
||||
|
@ -183,34 +181,23 @@ func (h releaseHandler) getStats(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
|
||||
func (h releaseHandler) deleteReleases(w http.ResponseWriter, r *http.Request) {
|
||||
err := h.service.Delete(r.Context())
|
||||
if err != nil {
|
||||
h.encoder.StatusResponse(w, http.StatusInternalServerError, map[string]interface{}{
|
||||
"code": "INTERNAL_SERVER_ERROR",
|
||||
"message": err.Error(),
|
||||
})
|
||||
return
|
||||
req := domain.DeleteReleaseRequest{}
|
||||
|
||||
olderThanParam := r.URL.Query().Get("olderThan")
|
||||
if olderThanParam != "" {
|
||||
duration, err := strconv.Atoi(olderThanParam)
|
||||
if err != nil {
|
||||
h.encoder.StatusResponse(w, http.StatusBadRequest, map[string]interface{}{
|
||||
"code": "BAD_REQUEST_PARAMS",
|
||||
"message": "olderThan parameter is invalid",
|
||||
})
|
||||
return
|
||||
}
|
||||
req.OlderThan = duration
|
||||
}
|
||||
|
||||
h.encoder.NoContent(w)
|
||||
}
|
||||
|
||||
func (h releaseHandler) deleteOlder(w http.ResponseWriter, r *http.Request) {
|
||||
durationStr := chi.URLParam(r, "duration")
|
||||
duration, err := strconv.Atoi(durationStr)
|
||||
if err != nil {
|
||||
h.encoder.StatusResponse(w, http.StatusBadRequest, map[string]interface{}{
|
||||
"code": "BAD_REQUEST_PARAMS",
|
||||
"message": "Invalid duration",
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
if err := h.service.DeleteOlder(r.Context(), duration); err != nil {
|
||||
h.encoder.StatusResponse(w, http.StatusInternalServerError, map[string]interface{}{
|
||||
"code": "INTERNAL_SERVER_ERROR",
|
||||
"message": err.Error(),
|
||||
})
|
||||
if err := h.service.Delete(r.Context(), &req); err != nil {
|
||||
h.encoder.Error(w, err)
|
||||
return
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue