package main
import (
"context"
"os"
"github.com/PacktPublishing/Hands-On-Dependency-Injection-in-Go/ch12/acme/internal/config"
"github.com/PacktPublishing/Hands-On-Dependency-Injection-in-Go/ch12/acme/internal/modules/exchange"
"github.com/PacktPublishing/Hands-On-Dependency-Injection-in-Go/ch12/acme/internal/modules/get"
"github.com/PacktPublishing/Hands-On-Dependency-Injection-in-Go/ch12/acme/internal/modules/list"
"github.com/PacktPublishing/Hands-On-Dependency-Injection-in-Go/ch12/acme/internal/modules/register"
"github.com/PacktPublishing/Hands-On-Dependency-Injection-in-Go/ch12/acme/internal/rest"
"github.com/google/go-cloud/wire"
)
func main() {
// bind stop channel to context
ctx := context.Background()
// start REST server
server, err := initializeServer()
if err != nil {
os.Exit(-1)
}
server.Listen(ctx.Done())
}
// List of wire enabled objects
var wireSetWithoutConfig = wire.NewSet(
// *exchange.Converter
exchange.NewConverter,
// *get.Getter
get.NewGetter,
// *list.Lister
list.NewLister,
// *register.Registerer
wire.Bind(new(register.Exchanger), &exchange.Converter{}),
register.NewRegisterer,
// *rest.Server
wire.Bind(new(rest.GetModel), &get.Getter{}),
wire.Bind(new(rest.ListModel), &list.Lister{}),
wire.Bind(new(rest.RegisterModel), ®ister.Registerer{}),
rest.New,
)
var wireSet = wire.NewSet(
wireSetWithoutConfig,
// *config.Config
config.Load,
// *exchange.Converter
wire.Bind(new(exchange.Config), &config.Config{}),
// *get.Getter
wire.Bind(new(get.Config), &config.Config{}),
// *list.Lister
wire.Bind(new(list.Config), &config.Config{}),
// *register.Registerer
wire.Bind(new(register.Config), &config.Config{}),
// *rest.Server
wire.Bind(new(rest.Config), &config.Config{}),
)
// Code generated by Wire. DO NOT EDIT.
//go:generate wire
//+build !wireinject
package main
import (
"github.com/PacktPublishing/Hands-On-Dependency-Injection-in-Go/ch12/acme/internal/config"
"github.com/PacktPublishing/Hands-On-Dependency-Injection-in-Go/ch12/acme/internal/modules/exchange"
"github.com/PacktPublishing/Hands-On-Dependency-Injection-in-Go/ch12/acme/internal/modules/get"
"github.com/PacktPublishing/Hands-On-Dependency-Injection-in-Go/ch12/acme/internal/modules/list"
"github.com/PacktPublishing/Hands-On-Dependency-Injection-in-Go/ch12/acme/internal/modules/register"
"github.com/PacktPublishing/Hands-On-Dependency-Injection-in-Go/ch12/acme/internal/rest"
)
// Injectors from wire.go:
func initializeServer() (*rest.Server, error) {
configConfig, err := config.Load()
if err != nil {
return nil, err
}
getter := get.NewGetter(configConfig)
lister := list.NewLister(configConfig)
converter := exchange.NewConverter(configConfig)
registerer := register.NewRegisterer(configConfig, converter)
server := rest.New(configConfig, getter, lister, registerer)
return server, nil
}
func initializeServerCustomConfig(exchangeConfig exchange.Config, getConfig get.Config, listConfig list.Config, registerConfig register.Config, restConfig rest.Config) *rest.Server {
getter := get.NewGetter(getConfig)
lister := list.NewLister(listConfig)
converter := exchange.NewConverter(exchangeConfig)
registerer := register.NewRegisterer(registerConfig, converter)
server := rest.New(restConfig, getter, lister, registerer)
return server
}