support pgsql model generation
This commit is contained in:
@@ -58,25 +58,29 @@ func (m *MySQL) DSN() string {
|
||||
}
|
||||
|
||||
type PostgreSQL struct {
|
||||
User string
|
||||
Password string
|
||||
Database string
|
||||
Host string
|
||||
Port uint
|
||||
SslMode string
|
||||
TimeZone string
|
||||
Username string
|
||||
Password string
|
||||
Database string
|
||||
Host string
|
||||
Port uint
|
||||
SslMode string
|
||||
TimeZone string
|
||||
Prefix string // 表前缀
|
||||
Singular bool //是否开启全局禁用复数,true表示开启
|
||||
MaxIdleConns int // 空闲中的最大连接数
|
||||
MaxOpenConns int // 打开到数据库的最大连接数
|
||||
}
|
||||
|
||||
func (m *PostgreSQL) EmptyDsn() string {
|
||||
dsnTpl := "host=%s user=%s password=%s port=%d dbname=postgres sslmode=disable TimeZone=Asia/Shanghai"
|
||||
|
||||
return fmt.Sprintf(dsnTpl, m.Host, m.User, m.Password, m.Port)
|
||||
return fmt.Sprintf(dsnTpl, m.Host, m.Username, m.Password, m.Port)
|
||||
}
|
||||
|
||||
// DSN connection dsn
|
||||
func (m *PostgreSQL) DSN() string {
|
||||
dsnTpl := "host=%s user=%s password=%s dbname=%s port=%d sslmode=%s TimeZone=%s"
|
||||
return fmt.Sprintf(dsnTpl, m.Host, m.User, m.Password, m.Database, m.Port, m.SslMode, m.TimeZone)
|
||||
return fmt.Sprintf(dsnTpl, m.Host, m.Username, m.Password, m.Database, m.Port, m.SslMode, m.TimeZone)
|
||||
}
|
||||
|
||||
type Redis struct {
|
||||
|
||||
@@ -28,6 +28,8 @@ func NewDatabase(config *config.Config) (*gorm.DB, error) {
|
||||
return NewMySQL(config.Database.MySQL)
|
||||
case DriverSQLite:
|
||||
return NewSQLite(config.Database.SQLite)
|
||||
case DriverPostgres:
|
||||
return NewPostgres(config.Database.PostgreSQL)
|
||||
}
|
||||
return nil, errors.New("failed to connect to db")
|
||||
}
|
||||
|
||||
36
providers/database/postgres.go
Normal file
36
providers/database/postgres.go
Normal file
@@ -0,0 +1,36 @@
|
||||
package database
|
||||
|
||||
import (
|
||||
"atom/providers/config"
|
||||
"log"
|
||||
|
||||
"gorm.io/driver/postgres"
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/schema"
|
||||
)
|
||||
|
||||
func NewPostgres(conf *config.PostgreSQL) (*gorm.DB, error) {
|
||||
dbConfig := postgres.Config{
|
||||
DSN: conf.DSN(), // DSN data source name
|
||||
}
|
||||
log.Println("PostgreSQL DSN: ", dbConfig.DSN)
|
||||
|
||||
gormConfig := gorm.Config{
|
||||
NamingStrategy: schema.NamingStrategy{
|
||||
TablePrefix: conf.Prefix,
|
||||
SingularTable: conf.Singular,
|
||||
},
|
||||
DisableForeignKeyConstraintWhenMigrating: true,
|
||||
}
|
||||
|
||||
db, err := gorm.Open(postgres.New(dbConfig), &gormConfig)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
sqlDB, _ := db.DB()
|
||||
sqlDB.SetMaxIdleConns(conf.MaxIdleConns)
|
||||
sqlDB.SetMaxOpenConns(conf.MaxOpenConns)
|
||||
|
||||
return db, err
|
||||
}
|
||||
Reference in New Issue
Block a user