Add Jacket indexer with capabilities implemented

This commit is contained in:
Alexander
2026-05-04 18:40:31 +02:00
parent 32eb8c931e
commit 8ffa92276e
13 changed files with 375 additions and 14 deletions
+22 -2
View File
@@ -2,23 +2,43 @@ package indexer
import (
"context"
"fmt"
"github.com/rs/zerolog/log"
"google.golang.org/grpc"
pb "homelab.lan/music-agregator/gen/music_agregator/indexer/v1"
"homelab.lan/music-agregator/internal/config"
)
type IndexerServer struct {
indexer Indexer
pb.UnimplementedIndexerServiceServer
}
func NewIndexerServer() *IndexerServer {
return &IndexerServer{}
func NewIndexerServer(cfg config.Config) (*IndexerServer, error) {
switch cfg.Indexer.Type {
case config.IndexerTypeJackett:
indexer := NewIndexer(cfg)
return &IndexerServer{indexer: indexer}, nil
default:
return nil, fmt.Errorf("Unable to create the indexer for type: %v", cfg.Indexer.Type)
}
}
func (server *IndexerServer) Search(ctx context.Context, req *pb.SearchRequest) (*pb.SearchResponse, error) {
return &pb.SearchResponse{}, nil
}
func (server *IndexerServer) Capabilities(ctx context.Context, req *pb.CapabilitiesRequest) (*pb.CapabilitiesResponse, error) {
capabilities, err := server.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
}
func (s *IndexerServer) Register(server *grpc.Server) {
pb.RegisterIndexerServiceServer(server, s)
}