Add kpgx.New()

This new package kpgx was created so that in the future we can
make it a separate module.

This will be important in order to prevent users from having to
import all the backend libraries even when they might only be
using one of them.
pull/13/head
Vinícius Garcia 2021-10-27 22:58:31 -03:00
parent d280eb1eb1
commit 45cb57cfa8
3 changed files with 44 additions and 2 deletions

33
kpgx/kpgx.go Normal file
View File

@ -0,0 +1,33 @@
package kpgx
import (
"context"
"github.com/jackc/pgx/v4/pgxpool"
"github.com/vingarcia/ksql"
)
// New instantiates a new ksql.Client using pgx as the backend driver
func New(
ctx context.Context,
connectionString string,
config ksql.Config,
) (db ksql.DB, err error) {
pgxConf, err := pgxpool.ParseConfig(connectionString)
if err != nil {
return ksql.DB{}, err
}
pgxConf.MaxConns = int32(config.MaxOpenConns)
pool, err := pgxpool.ConnectConfig(ctx, pgxConf)
if err != nil {
return ksql.DB{}, err
}
if err = pool.Ping(ctx); err != nil {
return ksql.DB{}, err
}
db, err = ksql.NewWithAdapter(ksql.NewPGXAdapter(pool), "postgres")
return db, err
}

View File

@ -99,8 +99,10 @@ func New(
return NewWithAdapter(SQLAdapter{db}, dbDriver)
}
// NewWithPGX instantiates a new KissSQL client using the pgx
// NewWithPGX instantiates a new ksql client using the pgx
// library in the backend
//
// deprecated: use kpgx.New() instead
func NewWithPGX(
ctx context.Context,
connectionString string,
@ -121,7 +123,7 @@ func NewWithPGX(
return DB{}, err
}
db, err = NewWithAdapter(PGXAdapter{pool}, "postgres")
db, err = NewWithAdapter(NewPGXAdapter(pool), "postgres")
return db, err
}

View File

@ -14,6 +14,13 @@ type PGXAdapter struct {
db *pgxpool.Pool
}
// NewPGXAdapter instantiates a new pgx adapter
func NewPGXAdapter(db *pgxpool.Pool) PGXAdapter {
return PGXAdapter{
db: db,
}
}
var _ DBAdapter = PGXAdapter{}
// ExecContext implements the DBAdapter interface