package orm import ( "context" "github.com/jinzhu/gorm" "github.com/pkg/errors" "gitlab.com/wpetit/goweb/service" // Import postgres dialect _ "github.com/jinzhu/gorm/dialects/postgres" ) func ServiceProvider(dialect, dsn string, debug bool) service.Provider { db, err := gorm.Open(dialect, dsn) if err != nil { err = errors.Wrap(err, "could not connect to database") } var srv *Service if err == nil { db = db.LogMode(debug) versionResolver := NewDBVersionResolver(db) ctx := context.Background() err := versionResolver.Init(ctx) if err != nil { err = errors.Wrap(err, "could not initialize version resolver") } if err == nil { srv = &Service{ db: db, migration: NewMigrationManager(versionResolver), } } } return func(ctn *service.Container) (interface{}, error) { if err != nil { return nil, err } return srv, nil } }