fix(releases): update size after actions run (#1809)

This commit is contained in:
ze0s 2024-11-06 18:55:00 +01:00 committed by GitHub
parent f4c2aef38c
commit 59c5858bf0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 31 additions and 5 deletions

View file

@ -56,6 +56,26 @@ func (repo *ReleaseRepo) Store(ctx context.Context, r *domain.Release) error {
return nil
}
func (repo *ReleaseRepo) Update(ctx context.Context, r *domain.Release) error {
queryBuilder := repo.db.squirrel.
Update("release").
Set("size", r.Size).
Where(sq.Eq{"id": r.ID})
query, args, err := queryBuilder.ToSql()
if err != nil {
return errors.Wrap(err, "error building query")
}
if _, err = repo.db.handler.ExecContext(ctx, query, args...); err != nil {
return errors.Wrap(err, "error executing query")
}
repo.log.Debug().Msgf("release.update: %d %s", r.ID, r.TorrentName)
return nil
}
func (repo *ReleaseRepo) StoreReleaseActionStatus(ctx context.Context, status *domain.ReleaseActionStatus) error {
if status.ID != 0 {
queryBuilder := repo.db.squirrel.

View file

@ -31,6 +31,7 @@ import (
type ReleaseRepo interface {
Store(ctx context.Context, release *Release) error
Update(ctx context.Context, r *Release) error
Find(ctx context.Context, params ReleaseQueryParams) (*FindReleasesResponse, error)
Get(ctx context.Context, req *GetReleaseRequest) (*Release, error)
GetIndexerOptions(ctx context.Context) ([]string, error)

View file

@ -25,6 +25,7 @@ type Service interface {
GetIndexerOptions(ctx context.Context) ([]string, error)
Stats(ctx context.Context) (*domain.ReleaseStats, error)
Store(ctx context.Context, release *domain.Release) error
Update(ctx context.Context, release *domain.Release) error
StoreReleaseActionStatus(ctx context.Context, actionStatus *domain.ReleaseActionStatus) error
Delete(ctx context.Context, req *domain.DeleteReleaseRequest) error
Process(release *domain.Release)
@ -81,6 +82,10 @@ func (s *service) Store(ctx context.Context, release *domain.Release) error {
return s.repo.Store(ctx, release)
}
func (s *service) Update(ctx context.Context, release *domain.Release) error {
return s.repo.Update(ctx, release)
}
func (s *service) StoreReleaseActionStatus(ctx context.Context, status *domain.ReleaseActionStatus) error {
return s.repo.StoreReleaseActionStatus(ctx, status)
}
@ -189,8 +194,6 @@ func (s *service) processFilters(ctx context.Context, filters []*domain.Filter,
// loop over and check filters
for _, f := range filters {
f := f
l := s.log.With().Str("indexer", release.Indexer.Identifier).Str("filter", f.Name).Str("release", release.TorrentName).Logger()
// save filter on release
@ -248,9 +251,7 @@ func (s *service) processFilters(ctx context.Context, filters []*domain.Filter,
var rejections []string
// run actions (watchFolder, test, exec, qBittorrent, Deluge, arr etc.)
for _, a := range actions {
act := a
for _, act := range actions {
// only run enabled actions
if !act.Enabled {
l.Trace().Msgf("release.Process: indexer: %s, filter: %s release: %s action '%s' not enabled, skip", release.Indexer.Name, release.FilterName, release.TorrentName, act.Name)
@ -291,6 +292,10 @@ func (s *service) processFilters(ctx context.Context, filters []*domain.Filter,
continue
}
if err = s.Update(ctx, release); err != nil {
l.Error().Err(err).Msgf("release.Process: error updating release: %v", release.TorrentName)
}
// if we have rejections from arr, continue to next filter
if len(rejections) > 0 {
continue