Skip to content

Instantly share code, notes, and snippets.

@ericelsken
Created July 18, 2018 17:14
Show Gist options
  • Save ericelsken/14b689f3d0f0f802a62c6918e35da6bb to your computer and use it in GitHub Desktop.
Save ericelsken/14b689f3d0f0f802a62c6918e35da6bb to your computer and use it in GitHub Desktop.
//Build uses config and its factory functions to build a new App.
//If err is nil, the returned App is ready to Run.
func (ab *AppBuilder) Build(config *config.Config) (app *App, err error) {
var sqlRepo *sqlrepo.Repo
var dbCloser io.Closer
defer func() {
if err != nil && dbCloser != nil {
dbCloser.Close()
}
}()
sqlRepo, dbCloser, err = ab.SQLRepoFactory(config)
if err != nil {
return nil, err
}
repos := NewRepos(sqlRepo)
bus := ab.CBusFactory(repos)
api := ab.APIFactory(bus, repos)
server := ab.ServerFactory(config)
return &App{
server: server,
handler: api.Handler(),
dbCloser: dbCloser,
}, nil
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment