good morning!!!!

Skip to content
Snippets Groups Projects
Commit ef3f9a32 authored by José Carlos Nieto's avatar José Carlos Nieto
Browse files

Move Open, New and NewTx to postgresql.go

parent 84655688
No related branches found
No related tags found
No related merge requests found
......@@ -54,66 +54,6 @@ func newDatabase(settings db.ConnectionURL) (*database, error) {
return d, nil
}
// Open stablishes a new connection with the SQL server.
func Open(settings db.ConnectionURL) (db.SQLDatabase, error) {
d, err := newDatabase(settings)
if err != nil {
return nil, err
}
if err := d.Open(settings); err != nil {
return nil, err
}
return d, nil
}
// NewTx returns a transaction session.
func NewTx(sqlTx *sql.Tx) (db.SQLTx, error) {
d, err := newDatabase(nil)
if err != nil {
return nil, err
}
// Binding with sqladapter's logic.
d.BaseDatabase = sqladapter.NewBaseDatabase(d)
// Binding with builder.
b, err := builder.New(d.BaseDatabase, template)
if err != nil {
return nil, err
}
d.SQLBuilder = b
if err := d.BaseDatabase.BindTx(sqlTx); err != nil {
return nil, err
}
newTx := sqladapter.NewTx(d)
return &tx{DatabaseTx: newTx}, nil
}
// New wraps the given *sql.DB session and creates a new db session.
func New(sess *sql.DB) (db.SQLDatabase, error) {
d, err := newDatabase(nil)
if err != nil {
return nil, err
}
// Binding with sqladapter's logic.
d.BaseDatabase = sqladapter.NewBaseDatabase(d)
// Binding with builder.
b, err := builder.New(d.BaseDatabase, template)
if err != nil {
return nil, err
}
d.SQLBuilder = b
if err := d.BaseDatabase.BindSession(sess); err != nil {
return nil, err
}
return d, nil
}
// ConnectionURL returns this database's ConnectionURL.
func (d *database) ConnectionURL() db.ConnectionURL {
return d.connURL
......@@ -206,6 +146,7 @@ func (d *database) CompileStatement(stmt *exql.Statement) string {
func (d *database) Err(err error) error {
if err != nil {
s := err.Error()
// These errors are not exported so we have to check them by they string value.
if strings.Contains(s, `too many clients`) || strings.Contains(s, `remaining connection slots are reserved`) || strings.Contains(s, `too many open`) {
return db.ErrTooManyClients
}
......
......@@ -22,7 +22,11 @@
package postgresql // import "upper.io/db.v2/postgresql"
import (
"database/sql"
"upper.io/db.v2"
"upper.io/db.v2/internal/sqladapter"
"upper.io/db.v2/sqlbuilder"
)
const sqlDriver = `postgres`
......@@ -37,3 +41,63 @@ func init() {
Open: Open,
})
}
// Open stablishes a new connection with the SQL server.
func Open(settings db.ConnectionURL) (db.SQLDatabase, error) {
d, err := newDatabase(settings)
if err != nil {
return nil, err
}
if err := d.Open(settings); err != nil {
return nil, err
}
return d, nil
}
// NewTx returns a transaction session.
func NewTx(sqlTx *sql.Tx) (db.SQLTx, error) {
d, err := newDatabase(nil)
if err != nil {
return nil, err
}
// Binding with sqladapter's logic.
d.BaseDatabase = sqladapter.NewBaseDatabase(d)
// Binding with builder.
b, err := builder.New(d.BaseDatabase, template)
if err != nil {
return nil, err
}
d.SQLBuilder = b
if err := d.BaseDatabase.BindTx(sqlTx); err != nil {
return nil, err
}
newTx := sqladapter.NewTx(d)
return &tx{DatabaseTx: newTx}, nil
}
// New wraps the given *sql.DB session and creates a new db session.
func New(sess *sql.DB) (db.SQLDatabase, error) {
d, err := newDatabase(nil)
if err != nil {
return nil, err
}
// Binding with sqladapter's logic.
d.BaseDatabase = sqladapter.NewBaseDatabase(d)
// Binding with builder.
b, err := builder.New(d.BaseDatabase, template)
if err != nil {
return nil, err
}
d.SQLBuilder = b
if err := d.BaseDatabase.BindSession(sess); err != nil {
return nil, err
}
return d, nil
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment