aboutsummaryrefslogtreecommitdiff
path: root/internal/db/models.go
diff options
context:
space:
mode:
authorzvrh <16538800+zvrh@users.noreply.github.com>2022-01-05 22:02:33 +0800
committerGitHub <noreply@github.com>2022-01-05 22:02:33 +0800
commita9be4de5a568b15384e1dec11f008d844c8e9c05 (patch)
treea055445dc0a497d8a8fc62eaebf81969a7bab8b3 /internal/db/models.go
parent14481533b829b2c85465abedace2736423c767ae (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.go18
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