package indexer import ( "context" "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 { service *IndexerService pb.UnimplementedIndexerServiceServer } func NewIndexerServer(cfg config.Config) (*IndexerServer, error) { service, err := NewIndexerService(cfg) if err != nil { log.Err(err).Msg("Failed to initialize IndexerService") return nil, err } return &IndexerServer{service: service}, nil } func (server *IndexerServer) Search(ctx context.Context, req *pb.SearchRequest) (*pb.SearchResponse, error) { log.Debug(). Str("query", req.GetQuery()). Int32("limit", req.GetLimit()). Str("tracker", req.GetTracker()). Msg("search started") resp, err := server.service.Search(req) if err != nil { log.Error().Err(err).Str("query", req.GetQuery()).Msg("search failed") return nil, err } log.Debug(). Str("query", req.GetQuery()). Int("results", len(resp.GetResult())). Msg("search completed") return resp, nil } func (server *IndexerServer) Capabilities(ctx context.Context, req *pb.CapabilitiesRequest) (*pb.CapabilitiesResponse, error) { log.Debug().Str("indexer", req.GetIndexer()).Msg("capabilities requested") resp, err := server.service.Capabilities(req) if err != nil { log.Error().Err(err).Str("indexer", req.GetIndexer()).Msg("capabilities failed") return nil, err } return resp, nil } func (s *IndexerServer) Register(server *grpc.Server) { pb.RegisterIndexerServiceServer(server, s) }