diff options
author | 2021-12-21 12:08:27 +0100 | |
---|---|---|
committer | 2021-12-21 12:08:27 +0100 | |
commit | ed9158fa05f43aa3e6f33892621d8a637bbd3f9c (patch) | |
tree | 40f0bd7aa5d2f7a20f155f26feff8a2ac64dc43c /internal/db | |
parent | Extend license notices to 2022 (#354) (diff) | |
download | gotosocial-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.go | 40 |
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) |