package metadata import ( "context" "github.com/rs/zerolog/log" "google.golang.org/grpc" pb "homelab.lan/music-agregator/gen/metadata/v1" "homelab.lan/music-agregator/internal/config" ) type MetadataServer struct { client pb.MetadataServiceClient conn *grpc.ClientConn pb.UnimplementedMetadataServiceServer } func NewMetadataServer(cfg config.Config) (*MetadataServer, error) { client, conn, err := NewMetadataClient(cfg.Metadata.Endpoint) if err != nil { log.Err(err).Msg("failed to initialize MetadataServer") return nil, err } return &MetadataServer{client: client, conn: conn}, nil } func (s *MetadataServer) Close() { if s.conn != nil { s.conn.Close() } } func (s *MetadataServer) Register(server *grpc.Server) { pb.RegisterMetadataServiceServer(server, s) } func (s *MetadataServer) GetArtist(ctx context.Context, req *pb.GetArtistRequest) (*pb.GetArtistResponse, error) { log.Debug().Msg("metadata GetArtist") return s.client.GetArtist(ctx, req) } func (s *MetadataServer) SearchArtists(ctx context.Context, req *pb.SearchArtistsRequest) (*pb.SearchArtistsResponse, error) { log.Debug().Str("query", req.GetQuery()).Int32("limit", req.GetLimit()).Msg("metadata SearchArtists") return s.client.SearchArtists(ctx, req) } func (s *MetadataServer) GetAlbum(ctx context.Context, req *pb.GetAlbumRequest) (*pb.GetAlbumResponse, error) { log.Debug().Msg("metadata GetAlbum") return s.client.GetAlbum(ctx, req) } func (s *MetadataServer) GetArtistAlbums(ctx context.Context, req *pb.GetArtistAlbumsRequest) (*pb.GetArtistAlbumsResponse, error) { log.Debug().Str("artist_id", req.GetArtistId()).Msg("metadata GetArtistAlbums") return s.client.GetArtistAlbums(ctx, req) } func (s *MetadataServer) GetTrack(ctx context.Context, req *pb.GetTrackRequest) (*pb.GetTrackResponse, error) { log.Debug().Msg("metadata GetTrack") return s.client.GetTrack(ctx, req) } func (s *MetadataServer) GetAlbumTracks(ctx context.Context, req *pb.GetAlbumTracksRequest) (*pb.GetAlbumTracksResponse, error) { log.Debug().Str("album_id", req.GetAlbumId()).Msg("metadata GetAlbumTracks") return s.client.GetAlbumTracks(ctx, req) } func (s *MetadataServer) SearchAlbums(ctx context.Context, req *pb.SearchAlbumsRequest) (*pb.SearchAlbumsResponse, error) { log.Debug().Str("query", req.GetQuery()).Str("artist", req.GetArtist()).Msg("metadata SearchAlbums") return s.client.SearchAlbums(ctx, req) } func (s *MetadataServer) SyncArtist(ctx context.Context, req *pb.SyncArtistRequest) (*pb.SyncArtistResponse, error) { log.Debug().Msg("metadata SyncArtist") return s.client.SyncArtist(ctx, req) }