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 }