Optimize GORM database initialization by extracting duplicate logic
This commit is contained in:
@@ -12,18 +12,31 @@ import (
|
|||||||
// GormMysql 初始化Mysql数据库
|
// GormMysql 初始化Mysql数据库
|
||||||
// Author [piexlmax](https://github.com/piexlmax)
|
// Author [piexlmax](https://github.com/piexlmax)
|
||||||
// Author [SliverHorn](https://github.com/SliverHorn)
|
// Author [SliverHorn](https://github.com/SliverHorn)
|
||||||
|
// Author [ByteZhou-2018](https://github.com/ByteZhou-2018)
|
||||||
func GormMysql() *gorm.DB {
|
func GormMysql() *gorm.DB {
|
||||||
m := global.GVA_CONFIG.Mysql
|
m := global.GVA_CONFIG.Mysql
|
||||||
|
return initMysqlDatabase(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GormMysqlByConfig 通过传入配置初始化Mysql数据库
|
||||||
|
func GormMysqlByConfig(m config.Mysql) *gorm.DB {
|
||||||
|
return initMysqlDatabase(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
// initMysqlDatabase 初始化Mysql数据库的辅助函数
|
||||||
|
func initMysqlDatabase(m config.Mysql) *gorm.DB {
|
||||||
if m.Dbname == "" {
|
if m.Dbname == "" {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
mysqlConfig := mysql.Config{
|
mysqlConfig := mysql.Config{
|
||||||
DSN: m.Dsn(), // DSN data source name
|
DSN: m.Dsn(), // DSN data source name
|
||||||
DefaultStringSize: 191, // string 类型字段的默认长度
|
DefaultStringSize: 191, // string 类型字段的默认长度
|
||||||
SkipInitializeWithVersion: false, // 根据版本自动配置
|
SkipInitializeWithVersion: false, // 根据版本自动配置
|
||||||
}
|
}
|
||||||
|
|
||||||
if db, err := gorm.Open(mysql.New(mysqlConfig), internal.Gorm.Config(m.Prefix, m.Singular)); err != nil {
|
if db, err := gorm.Open(mysql.New(mysqlConfig), internal.Gorm.Config(m.Prefix, m.Singular)); err != nil {
|
||||||
return nil
|
panic(err)
|
||||||
} else {
|
} else {
|
||||||
db.InstanceSet("gorm:table_options", "ENGINE="+m.Engine)
|
db.InstanceSet("gorm:table_options", "ENGINE="+m.Engine)
|
||||||
sqlDB, _ := db.DB()
|
sqlDB, _ := db.DB()
|
||||||
@@ -32,24 +45,3 @@ func GormMysql() *gorm.DB {
|
|||||||
return db
|
return db
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// GormMysqlByConfig 初始化Mysql数据库用过传入配置
|
|
||||||
func GormMysqlByConfig(m config.Mysql) *gorm.DB {
|
|
||||||
if m.Dbname == "" {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
mysqlConfig := mysql.Config{
|
|
||||||
DSN: m.Dsn(), // DSN data source name
|
|
||||||
DefaultStringSize: 191, // string 类型字段的默认长度
|
|
||||||
SkipInitializeWithVersion: false, // 根据版本自动配置
|
|
||||||
}
|
|
||||||
if db, err := gorm.Open(mysql.New(mysqlConfig), internal.Gorm.Config(m.Prefix, m.Singular)); err != nil {
|
|
||||||
panic(err)
|
|
||||||
} else {
|
|
||||||
db.InstanceSet("gorm:table_options", "ENGINE=InnoDB")
|
|
||||||
sqlDB, _ := db.DB()
|
|
||||||
sqlDB.SetMaxIdleConns(m.MaxIdleConns)
|
|
||||||
sqlDB.SetMaxOpenConns(m.MaxOpenConns)
|
|
||||||
return db
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@@ -15,32 +15,25 @@ import (
|
|||||||
// 如果需要Oracle库 放开import里的注释 把下方 mysql.Config 改为 oracle.Config ; mysql.New 改为 oracle.New
|
// 如果需要Oracle库 放开import里的注释 把下方 mysql.Config 改为 oracle.Config ; mysql.New 改为 oracle.New
|
||||||
func GormOracle() *gorm.DB {
|
func GormOracle() *gorm.DB {
|
||||||
m := global.GVA_CONFIG.Oracle
|
m := global.GVA_CONFIG.Oracle
|
||||||
if m.Dbname == "" {
|
return initOracleDatabase(m)
|
||||||
return nil
|
|
||||||
}
|
|
||||||
oracleConfig := mysql.Config{
|
|
||||||
DSN: m.Dsn(), // DSN data source name
|
|
||||||
DefaultStringSize: 191, // string 类型字段的默认长度
|
|
||||||
}
|
|
||||||
if db, err := gorm.Open(mysql.New(oracleConfig), internal.Gorm.Config(m.Prefix, m.Singular)); err != nil {
|
|
||||||
panic(err)
|
|
||||||
} else {
|
|
||||||
sqlDB, _ := db.DB()
|
|
||||||
sqlDB.SetMaxIdleConns(m.MaxIdleConns)
|
|
||||||
sqlDB.SetMaxOpenConns(m.MaxOpenConns)
|
|
||||||
return db
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// GormOracleByConfig 初始化Oracle数据库用过传入配置
|
// GormOracleByConfig 初始化Oracle数据库用过传入配置
|
||||||
func GormOracleByConfig(m config.Oracle) *gorm.DB {
|
func GormOracleByConfig(m config.Oracle) *gorm.DB {
|
||||||
|
return initOracleDatabase(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
// initOracleDatabase 初始化Oracle数据库的辅助函数
|
||||||
|
func initOracleDatabase(m config.Oracle) *gorm.DB {
|
||||||
if m.Dbname == "" {
|
if m.Dbname == "" {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
oracleConfig := mysql.Config{
|
oracleConfig := mysql.Config{
|
||||||
DSN: m.Dsn(), // DSN data source name
|
DSN: m.Dsn(), // DSN data source name
|
||||||
DefaultStringSize: 191, // string 类型字段的默认长度
|
DefaultStringSize: 191, // string 类型字段的默认长度
|
||||||
}
|
}
|
||||||
|
|
||||||
if db, err := gorm.Open(mysql.New(oracleConfig), internal.Gorm.Config(m.Prefix, m.Singular)); err != nil {
|
if db, err := gorm.Open(mysql.New(oracleConfig), internal.Gorm.Config(m.Prefix, m.Singular)); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
} else {
|
} else {
|
||||||
|
@@ -13,25 +13,16 @@ import (
|
|||||||
// Author [SliverHorn](https://github.com/SliverHorn)
|
// Author [SliverHorn](https://github.com/SliverHorn)
|
||||||
func GormPgSql() *gorm.DB {
|
func GormPgSql() *gorm.DB {
|
||||||
p := global.GVA_CONFIG.Pgsql
|
p := global.GVA_CONFIG.Pgsql
|
||||||
if p.Dbname == "" {
|
return initPgSqlDatabase(p)
|
||||||
return nil
|
|
||||||
}
|
|
||||||
pgsqlConfig := postgres.Config{
|
|
||||||
DSN: p.Dsn(), // DSN data source name
|
|
||||||
PreferSimpleProtocol: false,
|
|
||||||
}
|
|
||||||
if db, err := gorm.Open(postgres.New(pgsqlConfig), internal.Gorm.Config(p.Prefix, p.Singular)); err != nil {
|
|
||||||
return nil
|
|
||||||
} else {
|
|
||||||
sqlDB, _ := db.DB()
|
|
||||||
sqlDB.SetMaxIdleConns(p.MaxIdleConns)
|
|
||||||
sqlDB.SetMaxOpenConns(p.MaxOpenConns)
|
|
||||||
return db
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// GormPgSqlByConfig 初始化 Postgresql 数据库 通过参数
|
// GormPgSqlByConfig 初始化 Postgresql 数据库 通过指定参数
|
||||||
func GormPgSqlByConfig(p config.Pgsql) *gorm.DB {
|
func GormPgSqlByConfig(p config.Pgsql) *gorm.DB {
|
||||||
|
return initPgSqlDatabase(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
// initPgSqlDatabase 初始化 Postgresql 数据库的辅助函数
|
||||||
|
func initPgSqlDatabase(p config.Pgsql) *gorm.DB {
|
||||||
if p.Dbname == "" {
|
if p.Dbname == "" {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -40,7 +31,7 @@ func GormPgSqlByConfig(p config.Pgsql) *gorm.DB {
|
|||||||
PreferSimpleProtocol: false,
|
PreferSimpleProtocol: false,
|
||||||
}
|
}
|
||||||
if db, err := gorm.Open(postgres.New(pgsqlConfig), internal.Gorm.Config(p.Prefix, p.Singular)); err != nil {
|
if db, err := gorm.Open(postgres.New(pgsqlConfig), internal.Gorm.Config(p.Prefix, p.Singular)); err != nil {
|
||||||
panic(err)
|
return nil
|
||||||
} else {
|
} else {
|
||||||
sqlDB, _ := db.DB()
|
sqlDB, _ := db.DB()
|
||||||
sqlDB.SetMaxIdleConns(p.MaxIdleConns)
|
sqlDB.SetMaxIdleConns(p.MaxIdleConns)
|
||||||
|
@@ -11,22 +11,16 @@ import (
|
|||||||
// GormSqlite 初始化Sqlite数据库
|
// GormSqlite 初始化Sqlite数据库
|
||||||
func GormSqlite() *gorm.DB {
|
func GormSqlite() *gorm.DB {
|
||||||
s := global.GVA_CONFIG.Sqlite
|
s := global.GVA_CONFIG.Sqlite
|
||||||
if s.Dbname == "" {
|
return initSqliteDatabase(s)
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
if db, err := gorm.Open(sqlite.Open(s.Dsn()), internal.Gorm.Config(s.Prefix, s.Singular)); err != nil {
|
|
||||||
panic(err)
|
|
||||||
} else {
|
|
||||||
sqlDB, _ := db.DB()
|
|
||||||
sqlDB.SetMaxIdleConns(s.MaxIdleConns)
|
|
||||||
sqlDB.SetMaxOpenConns(s.MaxOpenConns)
|
|
||||||
return db
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// GormSqliteByConfig 初始化Sqlite数据库用过传入配置
|
// GormSqliteByConfig 初始化Sqlite数据库用过传入配置
|
||||||
func GormSqliteByConfig(s config.Sqlite) *gorm.DB {
|
func GormSqliteByConfig(s config.Sqlite) *gorm.DB {
|
||||||
|
return initSqliteDatabase(s)
|
||||||
|
}
|
||||||
|
|
||||||
|
// initSqliteDatabase 初始化Sqlite数据库辅助函数
|
||||||
|
func initSqliteDatabase(s config.Sqlite) *gorm.DB {
|
||||||
if s.Dbname == "" {
|
if s.Dbname == "" {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user