fix(indexers): delete and clean (#343)

This commit is contained in:
Ludvig Lundgren 2022-07-07 18:31:42 +02:00 committed by GitHub
parent 652bd8f6f3
commit 33e3691737
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 87 additions and 14 deletions

View file

@ -24,6 +24,7 @@ type Service interface {
Update(ctx context.Context, indexer domain.Indexer) (*domain.Indexer, error)
Delete(ctx context.Context, id int) error
FindByFilterID(ctx context.Context, id int) ([]domain.Indexer, error)
FindByID(ctx context.Context, id int) (*domain.Indexer, error)
List(ctx context.Context) ([]domain.Indexer, error)
GetAll() ([]*domain.IndexerDefinition, error)
GetTemplates() ([]domain.IndexerDefinition, error)
@ -115,13 +116,18 @@ func (s *service) Update(ctx context.Context, indexer domain.Indexer) (*domain.I
}
func (s *service) Delete(ctx context.Context, id int) error {
indexer, err := s.repo.FindByID(ctx, id)
if err != nil {
return err
}
if err := s.repo.Delete(ctx, id); err != nil {
s.log.Error().Err(err).Msgf("could not delete indexer by id: %v", id)
return err
}
// TODO remove handler if needed
// remove from lookup tables
s.removeIndexer(*indexer)
return nil
}
@ -136,6 +142,16 @@ func (s *service) FindByFilterID(ctx context.Context, id int) ([]domain.Indexer,
return indexers, err
}
func (s *service) FindByID(ctx context.Context, id int) (*domain.Indexer, error) {
indexers, err := s.repo.FindByID(ctx, id)
if err != nil {
s.log.Error().Err(err).Msgf("could not find indexer by id: %v", id)
return nil, err
}
return indexers, err
}
func (s *service) List(ctx context.Context) ([]domain.Indexer, error) {
indexers, err := s.repo.List(ctx)
if err != nil {
@ -321,10 +337,16 @@ func (s *service) Start() error {
return nil
}
func (s *service) removeIndexer(indexer domain.Indexer) error {
delete(s.definitions, indexer.Identifier)
func (s *service) removeIndexer(indexer domain.Indexer) {
// remove Torznab
if indexer.Implementation == "torznab" {
delete(s.torznabIndexers, indexer.Identifier)
}
return nil
// remove mapped definition
delete(s.mappedDefinitions, indexer.Identifier)
return
}
func (s *service) addIndexer(indexer domain.Indexer) error {