diff --git a/cmd/music-agregator/main.go b/cmd/music-agregator/main.go index cf4e22d..fb8b89b 100644 --- a/cmd/music-agregator/main.go +++ b/cmd/music-agregator/main.go @@ -11,11 +11,12 @@ import ( "github.com/rs/zerolog/log" "google.golang.org/grpc" "gopkg.in/yaml.v2" - pb "homelab.lan/music-agregator/gen/music_agregator/hello/v1" // My modules + "homelab.lan/music-agregator/internal" "homelab.lan/music-agregator/internal/config" "homelab.lan/music-agregator/internal/hello" + "homelab.lan/music-agregator/internal/indexer" appRouter "homelab.lan/music-agregator/internal/router" ) @@ -53,8 +54,15 @@ func serveGrpc(config config.Config) { var opts []grpc.ServerOption server := grpc.NewServer(opts...) - helloServiceHandler := hello.NewHelloServer() - pb.RegisterHelloServiceServer(server, helloServiceHandler) + services := []internal.Registrable{ + hello.NewHelloServer(), + indexer.NewIndexerServer(), + } + + for _, service := range services { + service.Register(server) + } + listener, err := net.Listen("tcp", fmt.Sprintf("%v:%v", config.App.Host, config.App.Port)) if err != nil { diff --git a/internal/hello/server.go b/internal/hello/server.go index 4936dd8..1ab00ff 100644 --- a/internal/hello/server.go +++ b/internal/hello/server.go @@ -3,6 +3,7 @@ package hello import ( "context" + "google.golang.org/grpc" pb "homelab.lan/music-agregator/gen/music_agregator/hello/v1" ) @@ -25,3 +26,7 @@ func (server *HelloServer) Echo(ctx context.Context, req *pb.EchoRequest) (*pb.E return response, nil } + +func (s *HelloServer) Register(server *grpc.Server) { + pb.RegisterHelloServiceServer(server, s) +} diff --git a/internal/indexer/server.go b/internal/indexer/server.go new file mode 100644 index 0000000..575377b --- /dev/null +++ b/internal/indexer/server.go @@ -0,0 +1,24 @@ +package indexer + +import ( + "context" + + "google.golang.org/grpc" + pb "homelab.lan/music-agregator/gen/music_agregator/indexer/v1" +) + +type IndexerServer struct { + pb.UnimplementedIndexerServiceServer +} + +func NewIndexerServer() *IndexerServer { + return &IndexerServer{} +} + +func (server *IndexerServer) Search(ctx context.Context, req *pb.SearchRequest) (*pb.SearchResponse, error) { + return &pb.SearchResponse{}, nil +} + +func (s *IndexerServer) Register(server *grpc.Server) { + pb.RegisterIndexerServiceServer(server, s) +} diff --git a/internal/registrable.go b/internal/registrable.go new file mode 100644 index 0000000..1fa25c2 --- /dev/null +++ b/internal/registrable.go @@ -0,0 +1,7 @@ +package internal + +import "google.golang.org/grpc" + +type Registrable interface { + Register(server *grpc.Server) +} diff --git a/proto/music_agregator/indexer/v1/indexer.proto b/proto/music_agregator/indexer/v1/indexer.proto new file mode 100644 index 0000000..4a28693 --- /dev/null +++ b/proto/music_agregator/indexer/v1/indexer.proto @@ -0,0 +1,11 @@ +syntax = "proto3"; +package music_agregator.indexer.v1; +option go_package = "homelab.lan/music-agregator/gen/music_agregator/v1/indexer"; + +service IndexerService { + rpc Search(SearchRequest) returns (SearchResponse){ + } +} + +message SearchRequest {} +message SearchResponse {}