Files
Gumble-Backend/internal/api/wire.go
Zane Walker 7e940c83a7
Some checks failed
Build & Test / build-test (push) Has been cancelled
Build & Test / swagger-codegen-cli (push) Has been cancelled
CodeQL / Analyze (go) (push) Has been cancelled
(Feat): Initial Commit
2026-07-03 19:41:31 +05:30

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
}