github.com/naoina/kocha@v0.7.1-0.20171129072645-78c7a531f799/cmd/kocha-generate/kocha-generate-model/skeleton/model/genmai/config.go.tmpl (about)

     1  package db
     2  
     3  import (
     4  	"fmt"
     5  	"path/filepath"
     6  
     7  	"github.com/naoina/genmai"
     8  	"github.com/naoina/kocha"
     9  
    10  	_ "github.com/go-sql-driver/mysql"
    11  	// _ "github.com/lib/pq"
    12  	_ "github.com/mattn/go-sqlite3"
    13  )
    14  
    15  var DatabaseMap = map[string]struct {
    16  	Driver string
    17  	DSN    string
    18  }{
    19  	"default": {
    20  		Driver: kocha.Getenv("KOCHA_DB_DRIVER", "sqlite3"),
    21  		DSN:    kocha.Getenv("KOCHA_DB_DSN", filepath.Join("db", "db.sqlite3")),
    22  	},
    23  }
    24  
    25  var dbMap = make(map[string]*genmai.DB)
    26  
    27  func Get(name string) *genmai.DB {
    28  	return dbMap[name]
    29  }
    30  
    31  func init() {
    32  	for name, dbconf := range DatabaseMap {
    33  		var d genmai.Dialect
    34  		switch dbconf.Driver {
    35  		case "mysql":
    36  			d = &genmai.MySQLDialect{}
    37  		case "postgres":
    38  			d = &genmai.PostgresDialect{}
    39  		case "sqlite3":
    40  			d = &genmai.SQLite3Dialect{}
    41  		default:
    42  			panic(fmt.Errorf("kocha: genmai: unsupported driver type: %v", dbconf.Driver))
    43  		}
    44  		db, err := genmai.New(d, dbconf.DSN)
    45  		if err != nil {
    46  			panic(err)
    47  		}
    48  		dbMap[name] = db
    49  	}
    50  }