diff options
author | zvrh <16538800+zvrh@users.noreply.github.com> | 2022-01-05 22:02:33 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-05 22:02:33 +0800 |
commit | a9be4de5a568b15384e1dec11f008d844c8e9c05 (patch) | |
tree | a055445dc0a497d8a8fc62eaebf81969a7bab8b3 /internal/db/models.go | |
parent | 14481533b829b2c85465abedace2736423c767ae (diff) |
database: add PostgreSQL custom schema support (#6695)
Co-authored-by: Homura37 <git@gvip.xyz>
Co-authored-by: Homura <16538800+Homura37@users.noreply.github.com>
Co-authored-by: Joe Chen <jc@unknwon.io>
Diffstat (limited to 'internal/db/models.go')
-rw-r--r-- | internal/db/models.go | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/internal/db/models.go b/internal/db/models.go index 6e4fd2a7..82968ae3 100644 --- a/internal/db/models.go +++ b/internal/db/models.go @@ -7,7 +7,6 @@ package db import ( "database/sql" "fmt" - "net/url" "os" "path" "path/filepath" @@ -90,13 +89,8 @@ func getEngine() (*xorm.Engine, error) { case "postgres": conf.UsePostgreSQL = true host, port := parsePostgreSQLHostPort(conf.Database.Host) - if host[0] == '/' { // looks like a unix socket - connStr = fmt.Sprintf("postgres://%s:%s@:%s/%s%ssslmode=%s&host=%s", - url.QueryEscape(conf.Database.User), url.QueryEscape(conf.Database.Password), port, conf.Database.Name, Param, conf.Database.SSLMode, host) - } else { - connStr = fmt.Sprintf("postgres://%s:%s@%s:%s/%s%ssslmode=%s", - url.QueryEscape(conf.Database.User), url.QueryEscape(conf.Database.Password), host, port, conf.Database.Name, Param, conf.Database.SSLMode) - } + connStr = fmt.Sprintf("user='%s' password='%s' host='%s' port='%s' dbname='%s' sslmode='%s' search_path='%s'", + conf.Database.User, conf.Database.Password, host, port, conf.Database.Name, conf.Database.SSLMode, conf.Database.Schema) driver = "pgx" case "mssql": @@ -123,6 +117,10 @@ func NewTestEngine() error { return fmt.Errorf("connect to database: %v", err) } + if conf.UsePostgreSQL { + x.SetSchema(conf.Database.Schema) + } + x.SetMapper(core.GonicMapper{}) return x.StoreEngine("InnoDB").Sync2(legacyTables...) } @@ -134,6 +132,10 @@ func SetEngine() (*gorm.DB, error) { return nil, fmt.Errorf("connect to database: %v", err) } + if conf.UsePostgreSQL { + x.SetSchema(conf.Database.Schema) + } + x.SetMapper(core.GonicMapper{}) var logPath string |