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 }