53 lines
1.2 KiB
Go
53 lines
1.2 KiB
Go
//go:build wireinject
|
|
|
|
package api
|
|
|
|
import (
|
|
"database/sql"
|
|
"testing"
|
|
|
|
"allaboutapps.dev/aw/go-starter/internal/auth"
|
|
"allaboutapps.dev/aw/go-starter/internal/config"
|
|
"allaboutapps.dev/aw/go-starter/internal/data/local"
|
|
"allaboutapps.dev/aw/go-starter/internal/metrics"
|
|
"github.com/google/wire"
|
|
)
|
|
|
|
// INJECTORS - https://github.com/google/wire/blob/main/docs/guide.md#injectors
|
|
|
|
// serviceSet groups the default set of providers that are required for initing a server
|
|
var serviceSet = wire.NewSet(
|
|
newServerWithComponents,
|
|
NewPush,
|
|
NewMailer,
|
|
NewI18N,
|
|
authServiceSet,
|
|
local.NewService,
|
|
metrics.New,
|
|
NewClock,
|
|
)
|
|
|
|
var authServiceSet = wire.NewSet(
|
|
NewAuthService,
|
|
wire.Bind(new(AuthService), new(*auth.Service)),
|
|
)
|
|
|
|
// InitNewServer returns a new Server instance.
|
|
func InitNewServer(
|
|
_ config.Server,
|
|
) (*Server, error) {
|
|
wire.Build(serviceSet, NewDB, NoTest)
|
|
return new(Server), nil
|
|
}
|
|
|
|
// InitNewServerWithDB returns a new Server instance with the given DB instance.
|
|
// All the other components are initialized via go wire according to the configuration.
|
|
func InitNewServerWithDB(
|
|
_ config.Server,
|
|
_ *sql.DB,
|
|
t ...*testing.T,
|
|
) (*Server, error) {
|
|
wire.Build(serviceSet)
|
|
return new(Server), nil
|
|
}
|