func New() (*Client, error) { str, err := connection.BuildString(command.Opts) if command.Opts.Debug && str != "" { fmt.Println("Creating a new client for:", str) } if err != nil { return nil, err } db, err := sqlx.Open("postgres", str) if err != nil { return nil, err } client := Client{ db: db, ConnectionString: str, History: history.New(), } return &client, nil }
func NewFromUrl(url string, sshInfo *shared.SSHInfo) (*Client, error) { var tunnel *Tunnel if sshInfo != nil { if command.Opts.Debug { fmt.Println("Opening SSH tunnel for:", sshInfo) } tunnel, err := NewTunnel(sshInfo, url) if err != nil { tunnel.Close() return nil, err } err = tunnel.Configure() if err != nil { tunnel.Close() return nil, err } go tunnel.Start() uri, err := neturl.Parse(url) if err != nil { tunnel.Close() return nil, err } // Override remote postgres port with local proxy port url = strings.Replace(url, uri.Host, fmt.Sprintf("127.0.0.1:%v", tunnel.Port), 1) } if command.Opts.Debug { fmt.Println("Creating a new client for:", url) } db, err := sqlx.Open("postgres", url) if err != nil { return nil, err } client := Client{ db: db, tunnel: tunnel, ConnectionString: url, History: history.New(), } return &client, nil }
func NewFromUrl(url string) (*Client, error) { if command.Opts.Debug { fmt.Println("Creating a new client for:", url) } db, err := sqlx.Open("postgres", url) if err != nil { return nil, err } client := Client{ db: db, ConnectionString: url, History: history.New(), } return &client, nil }