mirror of https://github.com/jackc/pgx.git
parent
460acd7757
commit
d1a56c95d2
|
@ -12,6 +12,8 @@ import (
|
||||||
|
|
||||||
type ConnectionParameters struct {
|
type ConnectionParameters struct {
|
||||||
socket string // path to unix domain socket (e.g. /private/tmp/.s.PGSQL.5432)
|
socket string // path to unix domain socket (e.g. /private/tmp/.s.PGSQL.5432)
|
||||||
|
host string
|
||||||
|
port uint16 // default: 5432
|
||||||
database string
|
database string
|
||||||
user string
|
user string
|
||||||
password string
|
password string
|
||||||
|
@ -27,28 +29,29 @@ type Connection struct {
|
||||||
txStatus byte
|
txStatus byte
|
||||||
}
|
}
|
||||||
|
|
||||||
// options:
|
func Connect(parameters ConnectionParameters) (c *Connection, err error) {
|
||||||
// socket: path to unix domain socket
|
|
||||||
// host: TCP address
|
|
||||||
// port:
|
|
||||||
// database: name of database
|
|
||||||
func Connect(paramaters ConnectionParameters) (c *Connection, err error) {
|
|
||||||
c = new(Connection)
|
c = new(Connection)
|
||||||
|
|
||||||
c.parameters = paramaters
|
c.parameters = parameters
|
||||||
|
if c.parameters.port == 0 {
|
||||||
|
c.parameters.port = 5432
|
||||||
|
}
|
||||||
|
|
||||||
if c.parameters.socket != "" {
|
if c.parameters.socket != "" {
|
||||||
c.conn, err = net.Dial("unix", c.parameters.socket)
|
c.conn, err = net.Dial("unix", c.parameters.socket)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
} else if c.parameters.host != "" {
|
||||||
|
c.conn, err = net.Dial("tcp", fmt.Sprintf("%s:%d", c.parameters.host, c.parameters.port))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
c.buf = make([]byte, 1024)
|
c.buf = make([]byte, 1024)
|
||||||
c.runtimeParams = make(map[string]string)
|
c.runtimeParams = make(map[string]string)
|
||||||
|
|
||||||
// conn, err := net.Dial("tcp", "localhost:5432")
|
|
||||||
|
|
||||||
msg := newStartupMessage()
|
msg := newStartupMessage()
|
||||||
msg.options["user"] = c.parameters.user
|
msg.options["user"] = c.parameters.user
|
||||||
if c.parameters.database != "" {
|
if c.parameters.database != "" {
|
||||||
|
|
|
@ -53,6 +53,18 @@ func TestConnect(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestConnectWithTcp(t *testing.T) {
|
||||||
|
conn, err := Connect(ConnectionParameters{host: "127.0.0.1", user: "pgx_md5", password: "secret", database: "pgx_test"})
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal("Unable to establish connection: " + err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
err = conn.Close()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal("Unable to close connection")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestConnectWithInvalidUser(t *testing.T) {
|
func TestConnectWithInvalidUser(t *testing.T) {
|
||||||
_, err := Connect(ConnectionParameters{socket: "/private/tmp/.s.PGSQL.5432", user: "invalid_user", database: "pgx_test"})
|
_, err := Connect(ConnectionParameters{socket: "/private/tmp/.s.PGSQL.5432", user: "invalid_user", database: "pgx_test"})
|
||||||
pgErr := err.(PgError)
|
pgErr := err.(PgError)
|
||||||
|
|
Loading…
Reference in New Issue