first commit
This commit is contained in:
39
repository/provider.go
Normal file
39
repository/provider.go
Normal file
@ -0,0 +1,39 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"arno/skeletor/service"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
const ServiceName service.Name = "repository"
|
||||
|
||||
func ServiceProvider(db *gorm.DB) service.Provider {
|
||||
return func(ctn *service.Container) (interface{}, error) {
|
||||
return db, nil
|
||||
}
|
||||
}
|
||||
|
||||
func From(container *service.Container) (*gorm.DB, error) {
|
||||
service, err := container.Service(ServiceName)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "error while retrieving '%s' service", ServiceName)
|
||||
}
|
||||
|
||||
srv, ok := service.(*gorm.DB)
|
||||
if !ok {
|
||||
return nil, errors.Errorf("retrieved service is not a valid '%s' service", ServiceName)
|
||||
}
|
||||
|
||||
return srv, nil
|
||||
}
|
||||
|
||||
func Must(container *service.Container) *gorm.DB {
|
||||
srv, err := From(container)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
return srv
|
||||
}
|
Reference in New Issue
Block a user