From 45cb57cfa8b6529348c5a19319992690f6fe8897 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vin=C3=ADcius=20Garcia?= Date: Wed, 27 Oct 2021 22:58:31 -0300 Subject: [PATCH] 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. --- kpgx/kpgx.go | 33 +++++++++++++++++++++++++++++++++ ksql.go | 6 ++++-- pgx_adapter.go | 7 +++++++ 3 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 kpgx/kpgx.go diff --git a/kpgx/kpgx.go b/kpgx/kpgx.go new file mode 100644 index 0000000..dd3f957 --- /dev/null +++ b/kpgx/kpgx.go @@ -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 +} diff --git a/ksql.go b/ksql.go index ed86687..723fd9d 100644 --- a/ksql.go +++ b/ksql.go @@ -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 } diff --git a/pgx_adapter.go b/pgx_adapter.go index 944dff7..98341d8 100644 --- a/pgx_adapter.go +++ b/pgx_adapter.go @@ -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