diff --git a/.gitignore b/.gitignore index 80dd085..f47e9ec 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,7 @@ *.so *.dylib file-service -server +/server bin/ # Test binary, built with `go test -c` diff --git a/internal/server/grpc.go b/internal/server/grpc.go new file mode 100644 index 0000000..7d9ed5c --- /dev/null +++ b/internal/server/grpc.go @@ -0,0 +1,34 @@ +package server + +import ( + pb "rag/file-system/api/file/v1" + "rag/file-system/internal/conf" + "rag/file-system/internal/service" + + "github.com/go-kratos/kratos/v2/log" + "github.com/go-kratos/kratos/v2/middleware/logging" + "github.com/go-kratos/kratos/v2/middleware/recovery" + "github.com/go-kratos/kratos/v2/middleware/tracing" + "github.com/go-kratos/kratos/v2/transport/grpc" +) + +func NewGRPCServer(c *conf.Server, svc *service.FileService, logger log.Logger) *grpc.Server { + opts := []grpc.ServerOption{ + grpc.Middleware( + recovery.Recovery(), + tracing.Server(), + logging.Server(logger), + ), + } + if c != nil && c.Grpc != nil { + if c.Grpc.Addr != "" { + opts = append(opts, grpc.Address(c.Grpc.Addr)) + } + if c.Grpc.Timeout != nil { + opts = append(opts, grpc.Timeout(c.Grpc.Timeout.AsDuration())) + } + } + srv := grpc.NewServer(opts...) + pb.RegisterFileServiceServer(srv, svc) + return srv +} diff --git a/internal/server/http.go b/internal/server/http.go new file mode 100644 index 0000000..59e8cf3 --- /dev/null +++ b/internal/server/http.go @@ -0,0 +1,34 @@ +package server + +import ( + pb "rag/file-system/api/file/v1" + "rag/file-system/internal/conf" + "rag/file-system/internal/service" + + "github.com/go-kratos/kratos/v2/log" + "github.com/go-kratos/kratos/v2/middleware/logging" + "github.com/go-kratos/kratos/v2/middleware/recovery" + "github.com/go-kratos/kratos/v2/middleware/tracing" + "github.com/go-kratos/kratos/v2/transport/http" +) + +func NewHTTPServer(c *conf.Server, svc *service.FileService, logger log.Logger) *http.Server { + opts := []http.ServerOption{ + http.Middleware( + recovery.Recovery(), + tracing.Server(), + logging.Server(logger), + ), + } + if c != nil && c.Http != nil { + if c.Http.Addr != "" { + opts = append(opts, http.Address(c.Http.Addr)) + } + if c.Http.Timeout != nil { + opts = append(opts, http.Timeout(c.Http.Timeout.AsDuration())) + } + } + srv := http.NewServer(opts...) + pb.RegisterFileServiceHTTPServer(srv, svc) + return srv +} diff --git a/internal/server/server.go b/internal/server/server.go new file mode 100644 index 0000000..15f4b09 --- /dev/null +++ b/internal/server/server.go @@ -0,0 +1,8 @@ +package server + +import "github.com/google/wire" + +var ProviderSet = wire.NewSet( + NewHTTPServer, + NewGRPCServer, +)