-
Notifications
You must be signed in to change notification settings - Fork 0
/
subworkshop.go
64 lines (56 loc) · 2.04 KB
/
subworkshop.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package bricks
import (
"context"
"github.com/go-bricks/bricks-demo/subworkshop/app/controllers"
"github.com/go-bricks/bricks-demo/subworkshop/app/services"
"github.com/go-bricks/bricks-demo/subworkshop/app/validations"
"github.com/go-bricks/bricks-demo/subworkshop/api"
serverInt "github.com/go-bricks/bricks/interfaces/http/server"
"github.com/go-bricks/bricks/providers/groups"
"github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
"go.uber.org/fx"
"google.golang.org/grpc"
)
type subworkshopServiceDeps struct {
fx.In
// API Implementations
SubWorkshop subworkshop.SubWorkshopServer
}
func SubWorkshopAPIsAndOtherDependenciesFxOption() fx.Option {
return fx.Options(
// GRPC Service APIs registration
fx.Provide(fx.Annotated{
Group: groups.GRPCServerAPIs,
Target: subworkshopGRPCServiceAPIs,
}),
// GRPC Gateway Generated Handlers registration
fx.Provide(fx.Annotated{
Group: groups.GRPCGatewayGeneratedHandlers + ",flatten", // "flatten" does this [][]serverInt.GRPCGatewayGeneratedHandlers -> []serverInt.GRPCGatewayGeneratedHandlers
Target: subworkshopGRPCGatewayHandlers,
}),
// All other tutorial dependencies
subworkshopDependencies(),
)
}
func subworkshopGRPCServiceAPIs(deps subworkshopServiceDeps) serverInt.GRPCServerAPI {
return func(srv *grpc.Server) {
subworkshop.RegisterSubWorkshopServer(srv, deps.SubWorkshop)
// Any additional gRPC Implementations should be called here
}
}
func subworkshopGRPCGatewayHandlers() []serverInt.GRPCGatewayGeneratedHandlers {
return []serverInt.GRPCGatewayGeneratedHandlers{
// Register sub subworkshop REST API
func(mux *runtime.ServeMux, endpoint string) error {
return subworkshop.RegisterSubWorkshopHandlerFromEndpoint(context.Background(), mux, endpoint, []grpc.DialOption{grpc.WithInsecure()})
},
// Any additional gRPC gateway registrations should be called here
}
}
func subworkshopDependencies() fx.Option {
return fx.Provide(
services.CreateSubWorkshopService,
controllers.CreateSubWorkshopController,
validations.CreateSubWorkshopValidations,
)
}