Browse Source

feat: add postgres schema config support

modified:   client/dtmcli/dtmimp/types.go
	modified:   client/dtmcli/dtmimp/utils.go
	modified:   conf.sample.yml
	modified:   dtmsvr/config/config.go
	modified:   dtmsvr/config/config_test.go
	modified:   dtmsvr/config/config_utils.go
pull/358/head
darigaaz86 4 years ago
parent
commit
a1d9c291ac
  1. 1
      client/dtmcli/dtmimp/types.go
  2. 4
      client/dtmcli/dtmimp/utils.go
  3. 2
      conf.sample.yml
  4. 2
      dtmsvr/config/config.go
  5. 5
      dtmsvr/config/config_test.go
  6. 3
      dtmsvr/config/config_utils.go

1
client/dtmcli/dtmimp/types.go

@ -22,4 +22,5 @@ type DBConf struct {
User string `yaml:"User"` User string `yaml:"User"`
Password string `yaml:"Password"` Password string `yaml:"Password"`
Db string `yaml:"Db"` Db string `yaml:"Db"`
Schema string `yaml:"Schema"`
} }

4
client/dtmcli/dtmimp/utils.go

@ -216,8 +216,8 @@ func GetDsn(conf DBConf) string {
dsn := map[string]string{ dsn := map[string]string{
"mysql": fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=true&loc=Local&interpolateParams=true", "mysql": fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=true&loc=Local&interpolateParams=true",
conf.User, conf.Password, host, conf.Port, conf.Db), conf.User, conf.Password, host, conf.Port, conf.Db),
"postgres": fmt.Sprintf("host=%s user=%s password=%s dbname='%s' port=%d sslmode=disable", "postgres": fmt.Sprintf("host=%s user=%s password=%s dbname='%s' search_path=%s port=%d sslmode=disable",
host, conf.User, conf.Password, conf.Db, conf.Port), host, conf.User, conf.Password, conf.Db, conf.Schema, conf.Port),
}[driver] }[driver]
PanicIf(dsn == "", fmt.Errorf("unknow driver: %s", driver)) PanicIf(dsn == "", fmt.Errorf("unknow driver: %s", driver))
return dsn return dsn

2
conf.sample.yml

@ -26,6 +26,8 @@
# User: 'postgres' # User: 'postgres'
# Password: 'mysecretpassword' # Password: 'mysecretpassword'
# Port: '5432' # Port: '5432'
# Db: 'postgres'
# Schema: 'myschema'
### following config is for only Driver postgres/mysql ### following config is for only Driver postgres/mysql
# MaxOpenConns: 500 # MaxOpenConns: 500

2
dtmsvr/config/config.go

@ -54,6 +54,7 @@ type Store struct {
User string `yaml:"User"` User string `yaml:"User"`
Password string `yaml:"Password"` Password string `yaml:"Password"`
Db string `yaml:"Db" default:"dtm"` Db string `yaml:"Db" default:"dtm"`
Schema string `yaml:"Schema" default:"public"`
MaxOpenConns int64 `yaml:"MaxOpenConns" default:"500"` MaxOpenConns int64 `yaml:"MaxOpenConns" default:"500"`
MaxIdleConns int64 `yaml:"MaxIdleConns" default:"500"` MaxIdleConns int64 `yaml:"MaxIdleConns" default:"500"`
ConnMaxLifeTime int64 `yaml:"ConnMaxLifeTime" default:"5"` ConnMaxLifeTime int64 `yaml:"ConnMaxLifeTime" default:"5"`
@ -76,6 +77,7 @@ func (s *Store) GetDBConf() dtmcli.DBConf {
User: s.User, User: s.User,
Password: s.Password, Password: s.Password,
Db: s.Db, Db: s.Db,
Schema: s.Schema,
} }
} }

5
dtmsvr/config/config_test.go

@ -52,6 +52,11 @@ func TestCheckConfig(t *testing.T) {
userExpect := errors.New("Db user not valid ") userExpect := errors.New("Db user not valid ")
assert.Equal(t, userErr, userExpect) assert.Equal(t, userErr, userExpect)
conf.Store = Store{Driver: Postgres, Host: "127.0.0.1", Port: 8686, User: "postgres", Schema: ""}
schemaErr := checkConfig(&conf)
schemaExpect := errors.New("Postgres schema not valid")
assert.Equal(t, schemaErr, schemaExpect)
conf.Store = Store{Driver: Redis, Host: "", Port: 8686} conf.Store = Store{Driver: Redis, Host: "", Port: 8686}
assert.Equal(t, errors.New("Redis host not valid"), checkConfig(&conf)) assert.Equal(t, errors.New("Redis host not valid"), checkConfig(&conf))

3
dtmsvr/config/config_utils.go

@ -78,6 +78,9 @@ func checkConfig(conf *Type) error {
if conf.Store.User == "" { if conf.Store.User == "" {
return errors.New("Db user not valid ") return errors.New("Db user not valid ")
} }
if conf.Store.Schema == "" {
return errors.New("Postgres schema not valid")
}
case Redis: case Redis:
if conf.Store.Host == "" { if conf.Store.Host == "" {
return errors.New("Redis host not valid") return errors.New("Redis host not valid")

Loading…
Cancel
Save