/
injector.go
39 lines (34 loc) · 1.13 KB
/
injector.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
//go:build wireinject
// +build wireinject
package main
import (
"net/http"
"github.com/go-playground/validator"
"github.com/google/wire"
"github.com/jalal-akbar/belajar-golang-dependency-injection/app"
"github.com/jalal-akbar/belajar-golang-dependency-injection/controller"
"github.com/jalal-akbar/belajar-golang-dependency-injection/middleware"
"github.com/jalal-akbar/belajar-golang-dependency-injection/repository"
"github.com/jalal-akbar/belajar-golang-dependency-injection/service"
"github.com/julienschmidt/httprouter"
)
var categorySet = wire.NewSet(
repository.NewCategoryRepository,
wire.Bind(new(repository.CategoryRepository), new(*repository.CategoryRepositoryImpl)),
service.NewCategoryServiceImpl,
wire.Bind(new(service.CategoryService), new(*service.CategoryServiceImpl)),
controller.NewCategoryController,
wire.Bind(new(controller.CategoryController), new(*controller.CategoryControllerImpl)),
)
func ServerInject() *http.Server {
wire.Build(
app.NewDB,
validator.New,
categorySet,
app.NewRouter,
wire.Bind(new(http.Handler), new(*httprouter.Router)),
middleware.NewAuthMiddleware,
NewServer,
)
return nil
}