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  }