Skip to content

Commit c3dd056

Browse files
committed
refactor: use loop for dig provide for simpler error handling
1 parent 8426db3 commit c3dd056

2 files changed

Lines changed: 39 additions & 82 deletions

File tree

internal/bootstrap/router_bootstrap.go

Lines changed: 24 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -41,22 +41,18 @@ func (app *BootstrapApp) setupRouter() error {
4141
}
4242
}
4343

44-
err := app.dig.Provide(middleware.NewContextMiddleware)
45-
46-
if err != nil {
47-
return fmt.Errorf("failed to provide context middleware: %w", err)
48-
}
49-
50-
err = app.dig.Provide(middleware.NewUIMiddleware)
51-
52-
if err != nil {
53-
return fmt.Errorf("failed to provide ui middleware: %w", err)
44+
middlewareProvideFor := []any{
45+
middleware.NewContextMiddleware,
46+
middleware.NewUIMiddleware,
47+
middleware.NewZerologMiddleware,
5448
}
5549

56-
err = app.dig.Provide(middleware.NewZerologMiddleware)
50+
for _, provider := range middlewareProvideFor {
51+
err := app.dig.Provide(provider)
5752

58-
if err != nil {
59-
return fmt.Errorf("failed to provide zerolog middleware: %w", err)
53+
if err != nil {
54+
return fmt.Errorf("failed to provide middleware: %w", err)
55+
}
6056
}
6157

6258
type middlewareInput struct {
@@ -67,7 +63,7 @@ func (app *BootstrapApp) setupRouter() error {
6763
ZerologMiddleware *middleware.ZerologMiddleware
6864
}
6965

70-
err = app.dig.Invoke(func(mi middlewareInput) {
66+
err := app.dig.Invoke(func(mi middlewareInput) {
7167
engine.Use(mi.ContextMiddleware.Middleware())
7268
engine.Use(mi.UIMiddleware.Middleware())
7369
engine.Use(mi.ZerologMiddleware.Middleware())
@@ -93,44 +89,23 @@ func (app *BootstrapApp) setupRouter() error {
9389
return fmt.Errorf("failed to provide api router group: %w", err)
9490
}
9591

96-
err = app.dig.Provide(controller.NewContextController)
97-
if err != nil {
98-
return fmt.Errorf("failed to provide context controller: %w", err)
99-
}
100-
101-
err = app.dig.Provide(controller.NewOAuthController)
102-
if err != nil {
103-
return fmt.Errorf("failed to provide oauth controller: %w", err)
104-
}
105-
106-
err = app.dig.Provide(controller.NewOIDCController)
107-
if err != nil {
108-
return fmt.Errorf("failed to provide oidc controller: %w", err)
109-
}
110-
111-
err = app.dig.Provide(controller.NewProxyController)
112-
if err != nil {
113-
return fmt.Errorf("failed to provide proxy controller: %w", err)
92+
controllerProvideFor := []any{
93+
controller.NewContextController,
94+
controller.NewOAuthController,
95+
controller.NewOIDCController,
96+
controller.NewProxyController,
97+
controller.NewUserController,
98+
controller.NewResourcesController,
99+
controller.NewHealthController,
100+
controller.NewWellKnownController,
114101
}
115102

116-
err = app.dig.Provide(controller.NewUserController)
117-
if err != nil {
118-
return fmt.Errorf("failed to provide user controller: %w", err)
119-
}
103+
for _, provider := range controllerProvideFor {
104+
err := app.dig.Provide(provider)
120105

121-
err = app.dig.Provide(controller.NewResourcesController)
122-
if err != nil {
123-
return fmt.Errorf("failed to provide resources controller: %w", err)
124-
}
125-
126-
err = app.dig.Provide(controller.NewHealthController)
127-
if err != nil {
128-
return fmt.Errorf("failed to provide health controller: %w", err)
129-
}
130-
131-
err = app.dig.Provide(controller.NewWellKnownController)
132-
if err != nil {
133-
return fmt.Errorf("failed to provide well-known controller: %w", err)
106+
if err != nil {
107+
return fmt.Errorf("failed to provide controller: %w", err)
108+
}
134109
}
135110

136111
type controllerInput struct {

internal/bootstrap/service_bootstrap.go

Lines changed: 15 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -21,42 +21,24 @@ func (app *BootstrapApp) setupServices() error {
2121
return fmt.Errorf("failed to get label provider: %w", err)
2222
}
2323

24-
err = app.dig.Provide(func() service.LabelProvider {
25-
return labelProvider
26-
})
27-
28-
if err != nil {
29-
return fmt.Errorf("failed to provide label provider: %w", err)
30-
}
31-
32-
err = app.dig.Provide(service.NewLdapService)
33-
if err != nil {
34-
return fmt.Errorf("failed to provide ldap service: %w", err)
35-
}
36-
37-
err = app.dig.Provide(service.NewTailscaleService)
38-
if err != nil {
39-
return fmt.Errorf("failed to provide tailscale service: %w", err)
40-
}
41-
42-
err = app.dig.Provide(service.NewAccessControlsService)
43-
if err != nil {
44-
return fmt.Errorf("failed to provide access controls service: %w", err)
45-
}
46-
47-
err = app.dig.Provide(service.NewOAuthBrokerService)
48-
if err != nil {
49-
return fmt.Errorf("failed to provide oauth broker service: %w", err)
24+
serviceProvideFor := []any{
25+
func() service.LabelProvider {
26+
return labelProvider
27+
},
28+
service.NewLdapService,
29+
service.NewTailscaleService,
30+
service.NewAccessControlsService,
31+
service.NewOAuthBrokerService,
32+
service.NewAuthService,
33+
service.NewOIDCService,
5034
}
5135

52-
err = app.dig.Provide(service.NewAuthService)
53-
if err != nil {
54-
return fmt.Errorf("failed to provide auth service: %w", err)
55-
}
36+
for _, provider := range serviceProvideFor {
37+
err = app.dig.Provide(provider)
5638

57-
err = app.dig.Provide(service.NewOIDCService)
58-
if err != nil {
59-
return fmt.Errorf("failed to provide oidc service: %w", err)
39+
if err != nil {
40+
return fmt.Errorf("failed to provide service: %w", err)
41+
}
6042
}
6143

6244
type svcInput struct {

0 commit comments

Comments
 (0)