diff --git a/.env.template b/.env.template new file mode 100644 index 0000000..5608259 --- /dev/null +++ b/.env.template @@ -0,0 +1,5 @@ +# Change all vars before going to production and remove all comments (!) +# Below all environment variables and default values + +GRPC_PORT=50051 +LOG_LEVEL=info diff --git a/order.proto b/api/proto/order.proto similarity index 94% rename from order.proto rename to api/proto/order.proto index 451ce88..0a2f232 100644 --- a/order.proto +++ b/api/proto/order.proto @@ -1,9 +1,7 @@ syntax = "proto3"; +package order; -option go_package = "pkg/api/test"; - - -package api; +option go_package = "pkg/api/order"; service OrderService { rpc CreateOrder(CreateOrderRequest) returns (CreateOrderResponse); @@ -23,7 +21,6 @@ message CreateOrderRequest { string item = 1; int32 quantity = 2; } - message CreateOrderResponse { string id = 1; } @@ -31,7 +28,6 @@ message CreateOrderResponse { message GetOrderRequest { string id = 1; } - message GetOrderResponse { Order order = 1; } @@ -41,7 +37,6 @@ message UpdateOrderRequest { string item = 2; int32 quantity = 3; } - message UpdateOrderResponse { Order order = 1; } @@ -49,13 +44,11 @@ message UpdateOrderResponse { message DeleteOrderRequest { string id = 1; } - message DeleteOrderResponse { bool success = 1; } message ListOrdersRequest {} - message ListOrdersResponse { repeated Order orders = 1; } diff --git a/cmd/server/main.go b/cmd/server/main.go new file mode 100644 index 0000000..aece91b --- /dev/null +++ b/cmd/server/main.go @@ -0,0 +1,28 @@ +package main + +import ( + "log" + + "orderservice/internal/config" + "orderservice/internal/server" +) + +func main() { + cfg, err := config.Load() + if err != nil { + log.Fatalf("Failed to load config: %v", err) + } + + srv := server.New(cfg) + srv.RegisterServices() + + go func() { + if err := srv.Start(); err != nil { + log.Fatalf("Failed to start server: %v", err) + } + }() + + log.Printf("Server is running on port %d", cfg.GRPCPort) + + select {} +} diff --git a/go.mod b/go.mod index 1f066ac..154acec 100644 --- a/go.mod +++ b/go.mod @@ -6,8 +6,8 @@ toolchain go1.24.9 require ( github.com/google/uuid v1.6.0 + github.com/joho/godotenv v1.5.1 google.golang.org/grpc v1.76.0 - google.golang.org/protobuf v1.36.10 ) require ( @@ -15,4 +15,5 @@ require ( golang.org/x/sys v0.34.0 // indirect golang.org/x/text v0.27.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250804133106-a7a43d27e69b // indirect + google.golang.org/protobuf v1.36.10 // indirect ) diff --git a/go.sum b/go.sum index d45f305..9465a3e 100644 --- a/go.sum +++ b/go.sum @@ -8,6 +8,8 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= +github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= diff --git a/internal/config/config.go b/internal/config/config.go new file mode 100644 index 0000000..e9b2aa1 --- /dev/null +++ b/internal/config/config.go @@ -0,0 +1,40 @@ +package config + +import ( + "log" + "os" + "strconv" + + "github.com/joho/godotenv" +) + +type Config struct { + GRPCPort int + LogLevel string +} + +func Load() (*Config, error) { + if err := godotenv.Load(); err != nil { + log.Printf("Warning: .env file not found: %v", err) + } + + config := &Config{} + + portStr := getEnv("GRPC_PORT", "50051") + port, err := strconv.Atoi(portStr) + if err != nil { + return nil, err + } + config.GRPCPort = port + + config.LogLevel = getEnv("LOG_LEVEL", "info") + + return config, nil +} + +func getEnv(key, defaultValue string) string { + if value := os.Getenv(key); value != "" { + return value + } + return defaultValue +} diff --git a/internal/interceptor/logger.go b/internal/interceptor/logger.go new file mode 100644 index 0000000..16450af --- /dev/null +++ b/internal/interceptor/logger.go @@ -0,0 +1,75 @@ +package interceptor + +import ( + "context" + "log" + "time" + + "google.golang.org/grpc" + "google.golang.org/grpc/status" +) + +type LoggerInterceptor struct{} + +func NewLoggerInterceptor() *LoggerInterceptor { + return &LoggerInterceptor{} +} + +func (i *LoggerInterceptor) Unary() grpc.UnaryServerInterceptor { + return func( + ctx context.Context, + req any, + info *grpc.UnaryServerInfo, + handler grpc.UnaryHandler, + ) (any, error) { + start := time.Now() + + log.Printf("gRPC method %s called", info.FullMethod) + log.Printf("Request: %+v", req) + + resp, err := handler(ctx, req) + + duration := time.Since(start) + + if err != nil { + if st, ok := status.FromError(err); ok { + log.Printf("Error: %s, Code: %s, Duration: %v", + st.Message(), st.Code(), duration) + } else { + log.Printf("Error: %v, Duration: %v", err, duration) + } + } else { + log.Printf("Response: %+v", resp) + log.Printf("Method %s completed in %v", info.FullMethod, duration) + } + + return resp, err + } +} + +func (i *LoggerInterceptor) Stream() grpc.StreamServerInterceptor { + return func( + srv any, + stream grpc.ServerStream, + info *grpc.StreamServerInfo, + handler grpc.StreamHandler, + ) error { + start := time.Now() + + log.Printf("gRPC stream method %s started", info.FullMethod) + + err := handler(srv, stream) + + duration := time.Since(start) + + if err != nil { + log.Printf("Stream method %s failed: %v, Duration: %v", + info.FullMethod, err, duration) + } else { + log.Printf("Stream method %s completed in %v", + info.FullMethod, duration) + } + + return err + } +} diff --git a/internal/server/server.go b/internal/server/server.go new file mode 100644 index 0000000..ae35ccc --- /dev/null +++ b/internal/server/server.go @@ -0,0 +1,60 @@ +package server + +import ( + "fmt" + "log" + "net" + + "orderservice/internal/config" + "orderservice/internal/interceptor" + "orderservice/internal/service" + + pb "orderservice/pkg/api/order" + + "google.golang.org/grpc" +) + +type Server struct { + grpcServer *grpc.Server + config *config.Config +} + +func New(cfg *config.Config) *Server { + loggerInterceptor := interceptor.NewLoggerInterceptor() + + grpcServer := grpc.NewServer( + grpc.UnaryInterceptor(loggerInterceptor.Unary()), + grpc.StreamInterceptor(loggerInterceptor.Stream()), + ) + + return &Server{ + grpcServer: grpcServer, + config: cfg, + } +} + +func (s *Server) RegisterServices() { + orderService := service.NewOrderServiceServer() + pb.RegisterOrderServiceServer(s.grpcServer, orderService) +} + +func (s *Server) Start() error { + addr := fmt.Sprintf(":%d", s.config.GRPCPort) + lis, err := net.Listen("tcp", addr) //nolint:noctx // no need to use context here + if err != nil { + return fmt.Errorf("failed to listen: %w", err) + } + + log.Printf("Starting gRPC server on port %d", s.config.GRPCPort) + + if err := s.grpcServer.Serve(lis); err != nil { + return fmt.Errorf("failed to serve: %w", err) + } + + return nil +} + +func (s *Server) Stop() { + s.grpcServer.GracefulStop() + log.Println("gRPC server stopped gracefully") +} diff --git a/internal/service/order_service.go b/internal/service/order_service.go new file mode 100644 index 0000000..37d49eb --- /dev/null +++ b/internal/service/order_service.go @@ -0,0 +1,110 @@ +package service + +import ( + "context" + "errors" + "sync" + + pb "orderservice/pkg/api/order" + + "github.com/google/uuid" +) + +var ErrOrderNotFound = errors.New("order not found") + +func generateOrderID() string { + return uuid.NewString() +} + +type OrderServiceServer struct { + pb.UnimplementedOrderServiceServer + + mu sync.RWMutex + orders map[string]*pb.Order +} + +func NewOrderServiceServer() *OrderServiceServer { + return &OrderServiceServer{ + orders: make(map[string]*pb.Order), + } +} + +func (s *OrderServiceServer) CreateOrder( + _ context.Context, + req *pb.CreateOrderRequest, +) (*pb.CreateOrderResponse, error) { + s.mu.Lock() + defer s.mu.Unlock() + + id := generateOrderID() + order := &pb.Order{ + Id: id, + Item: req.GetItem(), + Quantity: req.GetQuantity(), + } + s.orders[id] = order + + return &pb.CreateOrderResponse{Id: id}, nil +} + +func (s *OrderServiceServer) GetOrder(_ context.Context, req *pb.GetOrderRequest) (*pb.GetOrderResponse, error) { + s.mu.RLock() + defer s.mu.RUnlock() + + order, ok := s.orders[req.GetId()] + if !ok { + return nil, ErrOrderNotFound + } + + return &pb.GetOrderResponse{Order: order}, nil +} + +func (s *OrderServiceServer) UpdateOrder( + _ context.Context, + req *pb.UpdateOrderRequest, +) (*pb.UpdateOrderResponse, error) { + s.mu.Lock() + defer s.mu.Unlock() + + order, ok := s.orders[req.GetId()] + if !ok { + return nil, ErrOrderNotFound + } + + order.Item = req.GetItem() + order.Quantity = req.GetQuantity() + + return &pb.UpdateOrderResponse{Order: order}, nil +} + +func (s *OrderServiceServer) DeleteOrder( + _ context.Context, + req *pb.DeleteOrderRequest, +) (*pb.DeleteOrderResponse, error) { + s.mu.Lock() + defer s.mu.Unlock() + + _, ok := s.orders[req.GetId()] + if !ok { + return nil, ErrOrderNotFound + } + + delete(s.orders, req.GetId()) + + return &pb.DeleteOrderResponse{Success: true}, nil +} + +func (s *OrderServiceServer) ListOrders( + _ context.Context, + _ *pb.ListOrdersRequest, +) (*pb.ListOrdersResponse, error) { + s.mu.RLock() + defer s.mu.RUnlock() + + orders := make([]*pb.Order, 0, len(s.orders)) + for _, o := range s.orders { + orders = append(orders, o) + } + + return &pb.ListOrdersResponse{Orders: orders}, nil +} diff --git a/main.go b/main.go deleted file mode 100644 index 9c68c97..0000000 --- a/main.go +++ /dev/null @@ -1,118 +0,0 @@ -package main - -import ( - "context" - "errors" - "flag" - "fmt" - "log" - "net" - "sync" - - pb "orderservice/pkg/api/test" - - "github.com/google/uuid" - "google.golang.org/grpc" -) - -var ( - ErrOrderNotFound = errors.New("order not found") -) - -type OrderServiceServer struct { - pb.UnimplementedOrderServiceServer - mu sync.RWMutex - orders map[string]*pb.Order -} - -func NewOrderServiceServer() *OrderServiceServer { - return &OrderServiceServer{ - orders: make(map[string]*pb.Order), - } -} - -func (s *OrderServiceServer) CreateOrder(ctx context.Context, req *pb.CreateOrderRequest) (*pb.CreateOrderResponse, error) { - s.mu.Lock() - defer s.mu.Unlock() - - id := uuid.New().String() - order := &pb.Order{ - Id: id, - Item: req.Item, - Quantity: req.Quantity, - } - s.orders[id] = order - - return &pb.CreateOrderResponse{Id: id}, nil -} - -func (s *OrderServiceServer) GetOrder(ctx context.Context, req *pb.GetOrderRequest) (*pb.GetOrderResponse, error) { - s.mu.RLock() - defer s.mu.RUnlock() - - order, ok := s.orders[req.Id] - if !ok { - return nil, ErrOrderNotFound - } - - return &pb.GetOrderResponse{Order: order}, nil -} - -func (s *OrderServiceServer) UpdateOrder(ctx context.Context, req *pb.UpdateOrderRequest) (*pb.UpdateOrderResponse, error) { - s.mu.Lock() - defer s.mu.Unlock() - - order, ok := s.orders[req.Id] - if !ok { - return nil, ErrOrderNotFound - } - - order.Item = req.Item - order.Quantity = req.Quantity - - return &pb.UpdateOrderResponse{Order: order}, nil -} - -func (s *OrderServiceServer) DeleteOrder(ctx context.Context, req *pb.DeleteOrderRequest) (*pb.DeleteOrderResponse, error) { - s.mu.Lock() - defer s.mu.Unlock() - - _, ok := s.orders[req.Id] - if !ok { - return nil, ErrOrderNotFound - } - - delete(s.orders, req.Id) - - return &pb.DeleteOrderResponse{Success: true}, nil -} - -func (s *OrderServiceServer) ListOrders(ctx context.Context, req *pb.ListOrdersRequest) (*pb.ListOrdersResponse, error) { - s.mu.RLock() - defer s.mu.RUnlock() - - orders := make([]*pb.Order, 0, len(s.orders)) - for _, o := range s.orders { - orders = append(orders, o) - } - - return &pb.ListOrdersResponse{Orders: orders}, nil -} - -func main() { - port := flag.Int("port", 50051, "port to run grpc error on") - flag.Parse() - - lis, err := net.Listen("tcp", fmt.Sprintf(":%d", *port)) - if err != nil { - log.Fatalf("failed to listen: %v", err) - } - - s := grpc.NewServer() - pb.RegisterOrderServiceServer(s, NewOrderServiceServer()) - - log.Printf("server listening at %v", lis.Addr()) - if err := s.Serve(lis); err != nil { - log.Fatalf("failed to serve: %v", err) - } -} diff --git a/pkg/api/test/order.pb.go b/pkg/api/order/order.pb.go similarity index 86% rename from pkg/api/test/order.pb.go rename to pkg/api/order/order.pb.go index f7d432f..9ba9097 100644 --- a/pkg/api/test/order.pb.go +++ b/pkg/api/order/order.pb.go @@ -4,15 +4,14 @@ // protoc v3.19.6 // source: api/proto/order.proto -package test +package order import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" unsafe "unsafe" - - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" ) const ( @@ -542,7 +541,7 @@ var File_api_proto_order_proto protoreflect.FileDescriptor const file_api_proto_order_proto_rawDesc = "" + "\n" + - "\x15api/proto/order.proto\x12\x03api\"G\n" + + "\x15api/proto/order.proto\x12\x05order\"G\n" + "\x05Order\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + "\x04item\x18\x02 \x01(\tR\x04item\x12\x1a\n" + @@ -553,32 +552,29 @@ const file_api_proto_order_proto_rawDesc = "" + "\x13CreateOrderResponse\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\"!\n" + "\x0fGetOrderRequest\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\"4\n" + - "\x10GetOrderResponse\x12 \n" + - "\x05order\x18\x01 \x01(\v2\n" + - ".api.OrderR\x05order\"T\n" + + "\x02id\x18\x01 \x01(\tR\x02id\"6\n" + + "\x10GetOrderResponse\x12\"\n" + + "\x05order\x18\x01 \x01(\v2\f.order.OrderR\x05order\"T\n" + "\x12UpdateOrderRequest\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + "\x04item\x18\x02 \x01(\tR\x04item\x12\x1a\n" + - "\bquantity\x18\x03 \x01(\x05R\bquantity\"7\n" + - "\x13UpdateOrderResponse\x12 \n" + - "\x05order\x18\x01 \x01(\v2\n" + - ".api.OrderR\x05order\"$\n" + + "\bquantity\x18\x03 \x01(\x05R\bquantity\"9\n" + + "\x13UpdateOrderResponse\x12\"\n" + + "\x05order\x18\x01 \x01(\v2\f.order.OrderR\x05order\"$\n" + "\x12DeleteOrderRequest\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\"/\n" + "\x13DeleteOrderResponse\x12\x18\n" + "\asuccess\x18\x01 \x01(\bR\asuccess\"\x13\n" + - "\x11ListOrdersRequest\"8\n" + - "\x12ListOrdersResponse\x12\"\n" + - "\x06orders\x18\x01 \x03(\v2\n" + - ".api.OrderR\x06orders2\xcc\x02\n" + - "\fOrderService\x12@\n" + - "\vCreateOrder\x12\x17.api.CreateOrderRequest\x1a\x18.api.CreateOrderResponse\x127\n" + - "\bGetOrder\x12\x14.api.GetOrderRequest\x1a\x15.api.GetOrderResponse\x12@\n" + - "\vUpdateOrder\x12\x17.api.UpdateOrderRequest\x1a\x18.api.UpdateOrderResponse\x12@\n" + - "\vDeleteOrder\x12\x17.api.DeleteOrderRequest\x1a\x18.api.DeleteOrderResponse\x12=\n" + + "\x11ListOrdersRequest\":\n" + + "\x12ListOrdersResponse\x12$\n" + + "\x06orders\x18\x01 \x03(\v2\f.order.OrderR\x06orders2\xe0\x02\n" + + "\fOrderService\x12D\n" + + "\vCreateOrder\x12\x19.order.CreateOrderRequest\x1a\x1a.order.CreateOrderResponse\x12;\n" + + "\bGetOrder\x12\x16.order.GetOrderRequest\x1a\x17.order.GetOrderResponse\x12D\n" + + "\vUpdateOrder\x12\x19.order.UpdateOrderRequest\x1a\x1a.order.UpdateOrderResponse\x12D\n" + + "\vDeleteOrder\x12\x19.order.DeleteOrderRequest\x1a\x1a.order.DeleteOrderResponse\x12A\n" + "\n" + - "ListOrders\x12\x16.api.ListOrdersRequest\x1a\x17.api.ListOrdersResponseB\x0eZ\fpkg/api/testb\x06proto3" + "ListOrders\x12\x18.order.ListOrdersRequest\x1a\x19.order.ListOrdersResponseB\x0fZ\rpkg/api/orderb\x06proto3" var ( file_api_proto_order_proto_rawDescOnce sync.Once @@ -594,32 +590,32 @@ func file_api_proto_order_proto_rawDescGZIP() []byte { var file_api_proto_order_proto_msgTypes = make([]protoimpl.MessageInfo, 11) var file_api_proto_order_proto_goTypes = []any{ - (*Order)(nil), // 0: api.Order - (*CreateOrderRequest)(nil), // 1: api.CreateOrderRequest - (*CreateOrderResponse)(nil), // 2: api.CreateOrderResponse - (*GetOrderRequest)(nil), // 3: api.GetOrderRequest - (*GetOrderResponse)(nil), // 4: api.GetOrderResponse - (*UpdateOrderRequest)(nil), // 5: api.UpdateOrderRequest - (*UpdateOrderResponse)(nil), // 6: api.UpdateOrderResponse - (*DeleteOrderRequest)(nil), // 7: api.DeleteOrderRequest - (*DeleteOrderResponse)(nil), // 8: api.DeleteOrderResponse - (*ListOrdersRequest)(nil), // 9: api.ListOrdersRequest - (*ListOrdersResponse)(nil), // 10: api.ListOrdersResponse + (*Order)(nil), // 0: order.Order + (*CreateOrderRequest)(nil), // 1: order.CreateOrderRequest + (*CreateOrderResponse)(nil), // 2: order.CreateOrderResponse + (*GetOrderRequest)(nil), // 3: order.GetOrderRequest + (*GetOrderResponse)(nil), // 4: order.GetOrderResponse + (*UpdateOrderRequest)(nil), // 5: order.UpdateOrderRequest + (*UpdateOrderResponse)(nil), // 6: order.UpdateOrderResponse + (*DeleteOrderRequest)(nil), // 7: order.DeleteOrderRequest + (*DeleteOrderResponse)(nil), // 8: order.DeleteOrderResponse + (*ListOrdersRequest)(nil), // 9: order.ListOrdersRequest + (*ListOrdersResponse)(nil), // 10: order.ListOrdersResponse } var file_api_proto_order_proto_depIdxs = []int32{ - 0, // 0: api.GetOrderResponse.order:type_name -> api.Order - 0, // 1: api.UpdateOrderResponse.order:type_name -> api.Order - 0, // 2: api.ListOrdersResponse.orders:type_name -> api.Order - 1, // 3: api.OrderService.CreateOrder:input_type -> api.CreateOrderRequest - 3, // 4: api.OrderService.GetOrder:input_type -> api.GetOrderRequest - 5, // 5: api.OrderService.UpdateOrder:input_type -> api.UpdateOrderRequest - 7, // 6: api.OrderService.DeleteOrder:input_type -> api.DeleteOrderRequest - 9, // 7: api.OrderService.ListOrders:input_type -> api.ListOrdersRequest - 2, // 8: api.OrderService.CreateOrder:output_type -> api.CreateOrderResponse - 4, // 9: api.OrderService.GetOrder:output_type -> api.GetOrderResponse - 6, // 10: api.OrderService.UpdateOrder:output_type -> api.UpdateOrderResponse - 8, // 11: api.OrderService.DeleteOrder:output_type -> api.DeleteOrderResponse - 10, // 12: api.OrderService.ListOrders:output_type -> api.ListOrdersResponse + 0, // 0: order.GetOrderResponse.order:type_name -> order.Order + 0, // 1: order.UpdateOrderResponse.order:type_name -> order.Order + 0, // 2: order.ListOrdersResponse.orders:type_name -> order.Order + 1, // 3: order.OrderService.CreateOrder:input_type -> order.CreateOrderRequest + 3, // 4: order.OrderService.GetOrder:input_type -> order.GetOrderRequest + 5, // 5: order.OrderService.UpdateOrder:input_type -> order.UpdateOrderRequest + 7, // 6: order.OrderService.DeleteOrder:input_type -> order.DeleteOrderRequest + 9, // 7: order.OrderService.ListOrders:input_type -> order.ListOrdersRequest + 2, // 8: order.OrderService.CreateOrder:output_type -> order.CreateOrderResponse + 4, // 9: order.OrderService.GetOrder:output_type -> order.GetOrderResponse + 6, // 10: order.OrderService.UpdateOrder:output_type -> order.UpdateOrderResponse + 8, // 11: order.OrderService.DeleteOrder:output_type -> order.DeleteOrderResponse + 10, // 12: order.OrderService.ListOrders:output_type -> order.ListOrdersResponse 8, // [8:13] is the sub-list for method output_type 3, // [3:8] is the sub-list for method input_type 3, // [3:3] is the sub-list for extension type_name diff --git a/pkg/api/test/order_grpc.pb.go b/pkg/api/order/order_grpc.pb.go similarity index 96% rename from pkg/api/test/order_grpc.pb.go rename to pkg/api/order/order_grpc.pb.go index 6c4ad68..7a643de 100644 --- a/pkg/api/test/order_grpc.pb.go +++ b/pkg/api/order/order_grpc.pb.go @@ -4,11 +4,10 @@ // - protoc v3.19.6 // source: api/proto/order.proto -package test +package order import ( context "context" - grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" @@ -20,11 +19,11 @@ import ( const _ = grpc.SupportPackageIsVersion9 const ( - OrderService_CreateOrder_FullMethodName = "/api.OrderService/CreateOrder" - OrderService_GetOrder_FullMethodName = "/api.OrderService/GetOrder" - OrderService_UpdateOrder_FullMethodName = "/api.OrderService/UpdateOrder" - OrderService_DeleteOrder_FullMethodName = "/api.OrderService/DeleteOrder" - OrderService_ListOrders_FullMethodName = "/api.OrderService/ListOrders" + OrderService_CreateOrder_FullMethodName = "/order.OrderService/CreateOrder" + OrderService_GetOrder_FullMethodName = "/order.OrderService/GetOrder" + OrderService_UpdateOrder_FullMethodName = "/order.OrderService/UpdateOrder" + OrderService_DeleteOrder_FullMethodName = "/order.OrderService/DeleteOrder" + OrderService_ListOrders_FullMethodName = "/order.OrderService/ListOrders" ) // OrderServiceClient is the client API for OrderService service. @@ -245,7 +244,7 @@ func _OrderService_ListOrders_Handler(srv interface{}, ctx context.Context, dec // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) var OrderService_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "api.OrderService", + ServiceName: "order.OrderService", HandlerType: (*OrderServiceServer)(nil), Methods: []grpc.MethodDesc{ {