package indexer import ( "fmt" "github.com/rs/zerolog/log" pb "homelab.lan/music-agregator/gen/music_agregator/indexer/v1" "homelab.lan/music-agregator/internal/config" ) type IndexerService struct { indexer Indexer } func NewIndexerService(cfg config.Config) (*IndexerService, error) { switch cfg.Indexer.Type { case config.IndexerTypeJackett: indexer := NewIndexer(cfg) return &IndexerService{indexer: indexer}, nil default: return nil, fmt.Errorf("Unable to create the indexer for type: %v", cfg.Indexer.Type) } } func (service *IndexerService) Search(req *pb.SearchRequest) (*pb.SearchResponse, error) { searchResult, err := service.indexer.Search(req.GetQuery(), req.GetLimit(), req.GetTracker()) if err != nil { log.Error().Err(err).Msg("Failed to search in indexer") return nil, err } return searchResult.ToProto(), nil } func (service *IndexerService) Capabilities(req *pb.CapabilitiesRequest) (*pb.CapabilitiesResponse, error) { capabilities, err := service.indexer.Capabilities(req.GetIndexer()) if err != nil { log.Error().Err(err).Msg("Failed to get capabilities from indexer") return nil, err } return capabilities.ToProto(), nil }