summaryrefslogtreecommitdiff
path: root/internal/db
diff options
context:
space:
mode:
authorLibravatar embr <git@liclac.eu>2021-12-21 12:08:27 +0100
committerLibravatar GitHub <noreply@github.com>2021-12-21 12:08:27 +0100
commited9158fa05f43aa3e6f33892621d8a637bbd3f9c (patch)
tree40f0bd7aa5d2f7a20f155f26feff8a2ac64dc43c /internal/db
parentExtend license notices to 2022 (#354) (diff)
downloadgotosocial-ed9158fa05f43aa3e6f33892621d8a637bbd3f9c.tar.xz
[fix] Make postgres connections magically work in common setups (#352)
* Don't use the system 'postgres' database by default * Use postgres adapter defaults The pgx code actually goes to great lengths to make postgres connections Just Work(tm) out of the box, including supporting `~/.pg_service.conf`, SSL certificates, UNIX sockets if it can find a socket at a common path, and falling back to TCP to localhost if not. (On Windows, it won't try to use UNIX sockets, but will read credentials from %appdata% as is standard over there.) By applying our flags as overrides only when they're specified, database connections should Just Work(tm) anywhere `psql gotosocial` does.
Diffstat (limited to 'internal/db')
-rw-r--r--internal/db/bundb/bundb.go40
1 files changed, 16 insertions, 24 deletions
diff --git a/internal/db/bundb/bundb.go b/internal/db/bundb/bundb.go
index 19414b758..47fe4fb47 100644
--- a/internal/db/bundb/bundb.go
+++ b/internal/db/bundb/bundb.go
@@ -280,29 +280,11 @@ func deriveBunDBPGOptions() (*pgx.ConnConfig, error) {
return nil, fmt.Errorf("expected db type of %s but got %s", db.DBTypePostgres, viper.GetString(keys.DbType))
}
- // validate port
+ // these are all optional, the db adapter figures out defaults
port := viper.GetInt(keys.DbPort)
- if port == 0 {
- return nil, errors.New("no port set")
- }
-
- // validate address
address := viper.GetString(keys.DbAddress)
- if address == "" {
- return nil, errors.New("no address set")
- }
-
- // validate username
username := viper.GetString(keys.DbUser)
- if username == "" {
- return nil, errors.New("no user set")
- }
-
- // validate that there's a password
password := viper.GetString(keys.DbPassword)
- if password == "" {
- return nil, errors.New("no password set")
- }
// validate database
database := viper.GetString(keys.DbDatabase)
@@ -363,11 +345,21 @@ func deriveBunDBPGOptions() (*pgx.ConnConfig, error) {
}
cfg, _ := pgx.ParseConfig("")
- cfg.Host = address
- cfg.Port = uint16(port)
- cfg.User = username
- cfg.Password = password
- cfg.TLSConfig = tlsConfig
+ if address != "" {
+ cfg.Host = address
+ }
+ if port > 0 {
+ cfg.Port = uint16(port)
+ }
+ if username != "" {
+ cfg.User = username
+ }
+ if password != "" {
+ cfg.Password = password
+ }
+ if tlsConfig != nil {
+ cfg.TLSConfig = tlsConfig
+ }
cfg.Database = database
cfg.PreferSimpleProtocol = true
cfg.RuntimeParams["application_name"] = viper.GetString(keys.ApplicationName)