diff --git a/pkg/cli/cli.go b/pkg/cli/cli.go index 07c9333..4aef2aa 100644 --- a/pkg/cli/cli.go +++ b/pkg/cli/cli.go @@ -197,7 +197,7 @@ func Run() { } // Start session cleanup worker - if options.Sessions { + if options.Sessions && !command.Opts.ConnectionIdleTimeoutDisabled { go api.StartSessionCleanup() } diff --git a/pkg/client/client.go b/pkg/client/client.go index cc5bbdc..2841c14 100644 --- a/pkg/client/client.go +++ b/pkg/client/client.go @@ -367,7 +367,7 @@ func (client *Client) Close() error { } func (client *Client) IsIdle() bool { - return time.Since(client.lastQueryTime).Hours() > 1 + return time.Since(client.lastQueryTime).Minutes() > command.Opts.ConnectionIdleTimeout } // Fetch all rows as strings for a single column diff --git a/pkg/command/options.go b/pkg/command/options.go index b6abf42..84456d3 100644 --- a/pkg/command/options.go +++ b/pkg/command/options.go @@ -9,31 +9,33 @@ import ( ) type Options struct { - Version bool `short:"v" long:"version" description:"Print version"` - Debug bool `short:"d" long:"debug" description:"Enable debugging mode" default:"false"` - Url string `long:"url" description:"Database connection string"` - Host string `long:"host" description:"Server hostname or IP"` - Port int `long:"port" description:"Server port" default:"5432"` - User string `long:"user" description:"Database user"` - Pass string `long:"pass" description:"Password for user"` - DbName string `long:"db" description:"Database name"` - Ssl string `long:"ssl" description:"SSL option"` - HttpHost string `long:"bind" description:"HTTP server host" default:"localhost"` - HttpPort uint `long:"listen" description:"HTTP server listen port" default:"8081"` - AuthUser string `long:"auth-user" description:"HTTP basic auth user"` - AuthPass string `long:"auth-pass" description:"HTTP basic auth password"` - SkipOpen bool `short:"s" long:"skip-open" description:"Skip browser open on start"` - Sessions bool `long:"sessions" description:"Enable multiple database sessions" default:"false"` - Prefix string `long:"prefix" description:"Add a url prefix"` - ReadOnly bool `long:"readonly" description:"Run database connection in readonly mode"` - LockSession bool `long:"lock-session" description:"Lock session to a single database connection" default:"false"` - Bookmark string `short:"b" long:"bookmark" description:"Bookmark to use for connection. Bookmark files are stored under $HOME/.pgweb/bookmarks/*.toml" default:""` - BookmarksDir string `long:"bookmarks-dir" description:"Overrides default directory for bookmark files to search" default:""` - DisablePrettyJson bool `long:"no-pretty-json" description:"Disable JSON formatting feature for result export" default:"false"` - DisableSSH bool `long:"no-ssh" description:"Disable database connections via SSH" default:"false"` - ConnectBackend string `long:"connect-backend" description:"Enable database authentication through a third party backend"` - ConnectToken string `long:"connect-token" description:"Authentication token for the third-party connect backend"` - ConnectHeaders string `long:"connect-headers" description:"List of headers to pass to the connect backend"` + Version bool `short:"v" long:"version" description:"Print version"` + Debug bool `short:"d" long:"debug" description:"Enable debugging mode" default:"false"` + Url string `long:"url" description:"Database connection string"` + Host string `long:"host" description:"Server hostname or IP"` + Port int `long:"port" description:"Server port" default:"5432"` + User string `long:"user" description:"Database user"` + Pass string `long:"pass" description:"Password for user"` + DbName string `long:"db" description:"Database name"` + Ssl string `long:"ssl" description:"SSL option"` + HttpHost string `long:"bind" description:"HTTP server host" default:"localhost"` + HttpPort uint `long:"listen" description:"HTTP server listen port" default:"8081"` + AuthUser string `long:"auth-user" description:"HTTP basic auth user"` + AuthPass string `long:"auth-pass" description:"HTTP basic auth password"` + SkipOpen bool `short:"s" long:"skip-open" description:"Skip browser open on start"` + Sessions bool `long:"sessions" description:"Enable multiple database sessions" default:"false"` + Prefix string `long:"prefix" description:"Add a url prefix"` + ReadOnly bool `long:"readonly" description:"Run database connection in readonly mode"` + LockSession bool `long:"lock-session" description:"Lock session to a single database connection" default:"false"` + Bookmark string `short:"b" long:"bookmark" description:"Bookmark to use for connection. Bookmark files are stored under $HOME/.pgweb/bookmarks/*.toml" default:""` + BookmarksDir string `long:"bookmarks-dir" description:"Overrides default directory for bookmark files to search" default:""` + DisablePrettyJson bool `long:"no-pretty-json" description:"Disable JSON formatting feature for result export" default:"false"` + DisableSSH bool `long:"no-ssh" description:"Disable database connections via SSH" default:"false"` + ConnectBackend string `long:"connect-backend" description:"Enable database authentication through a third party backend"` + ConnectToken string `long:"connect-token" description:"Authentication token for the third-party connect backend"` + ConnectHeaders string `long:"connect-headers" description:"List of headers to pass to the connect backend"` + ConnectionIdleTimeoutDisabled bool `long:"disable-connection-idle-timeout" description:"Disable connection idle timeout" default:"false"` + ConnectionIdleTimeout float64 `long:"idle-timeout" description:"Set connection idle timeout in minutes" default:"180"` } var Opts Options