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/bundb | |
| 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/bundb')
| -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) | 
