github.com/iron-io/functions@v0.0.0-20180820112432-d59d7d1c40b2/api/datastore/datastore.go (about) 1 package datastore 2 3 import ( 4 "fmt" 5 "net/url" 6 7 "github.com/Sirupsen/logrus" 8 "github.com/iron-io/functions/api/datastore/bolt" 9 "github.com/iron-io/functions/api/datastore/mysql" 10 "github.com/iron-io/functions/api/datastore/postgres" 11 "github.com/iron-io/functions/api/datastore/redis" 12 "github.com/iron-io/functions/api/models" 13 ) 14 15 func New(dbURL string) (models.Datastore, error) { 16 u, err := url.Parse(dbURL) 17 if err != nil { 18 logrus.WithError(err).WithFields(logrus.Fields{"url": dbURL}).Fatal("bad DB URL") 19 } 20 logrus.WithFields(logrus.Fields{"db": u.Scheme}).Debug("creating new datastore") 21 switch u.Scheme { 22 case "bolt": 23 return bolt.New(u) 24 case "postgres": 25 return postgres.New(u) 26 case "mysql": 27 return mysql.New(u) 28 case "redis": 29 return redis.New(u) 30 default: 31 return nil, fmt.Errorf("db type not supported %v", u.Scheme) 32 } 33 }