feat: Database type support

This commit is contained in:
zhangwenjian
2020-07-03 00:34:54 +08:00
parent ab34ba8aad
commit a6970e9c67
20 changed files with 190 additions and 301 deletions
+69 -13
View File
@@ -3,23 +3,79 @@ package config
import "github.com/spf13/viper"
type Database struct {
Dbtype string
Host string
Port int
Name string
Username string
Password string
DbType string
SqLite *SqLite
Mysql *Mysql
PgSql *PgSql
}
type SqLite struct {
MasterConn string
DBName string
}
type Mysql struct {
MasterConn string
DBName string
}
type PgSql struct {
MasterConn string
DBName string
}
func InitDatabase(cfg *viper.Viper) *Database {
return &Database{
Port: cfg.GetInt("port"),
Dbtype: cfg.GetString("dbType"),
Host: cfg.GetString("host"),
Name: cfg.GetString("name"),
Username: cfg.GetString("username"),
Password: cfg.GetString("password"),
dbType := cfg.GetString("dbType")
db := &Database{
DbType: cfg.GetString("dbType"),
}
if dbType == "sqlite3" {
sqlit := cfg.Sub("sqlite")
if sqlit == nil {
panic("config not found settings.database.sqlite")
}
db.SqLite = InitSqlite(sqlit)
} else if dbType == "mysql" {
mysql := cfg.Sub("mysql")
if mysql == nil {
panic("config not found settings.database.mysql")
}
db.Mysql = InitMysql(mysql)
} else if dbType == "pgsql" {
pgsql := cfg.Sub("pgsql")
if pgsql == nil {
panic("config not found settings.database.pgsql")
}
db.PgSql = InitPgsql(pgsql)
} else {
panic("unknown dbtype")
}
return db
}
var DatabaseConfig = new(Database)
func InitSqlite(cfg *viper.Viper) *SqLite {
return &SqLite{
MasterConn: cfg.GetString("masterconn"),
DBName: cfg.GetString("dbname"),
}
}
func InitMysql(cfg *viper.Viper) *Mysql {
return &Mysql{
MasterConn: cfg.GetString("masterconn"),
DBName: cfg.GetString("dbname"),
}
}
func InitPgsql(cfg *viper.Viper) *PgSql {
return &PgSql{
MasterConn: cfg.GetString("masterconn"),
DBName: cfg.GetString("dbname"),
}
}