aboutsummaryrefslogtreecommitdiff
path: root/connector.go
diff options
context:
space:
mode:
authorStefan Majewsky <majewsky@gmx.net>2026-07-30 23:48:18 +0200
committerStefan Majewsky <majewsky@gmx.net>2026-07-30 23:48:18 +0200
commit2bf760b9b4d71d3b67c5489d2c46bfa04d4629f9 (patch)
tree969fd9eb4d6cb1b83372159fc6c37cf32cc57c17 /connector.go
parent584bdd9d0c0a0e066df69cc5f11de352166d7271 (diff)
downloadgo-gg-pgx-2bf760b9b4d71d3b67c5489d2c46bfa04d4629f9.tar.gz
add full implementation
Diffstat (limited to 'connector.go')
-rw-r--r--connector.go31
1 files changed, 23 insertions, 8 deletions
diff --git a/connector.go b/connector.go
index d7f1242..1914ddb 100644
--- a/connector.go
+++ b/connector.go
@@ -1,13 +1,28 @@
// SPDX-FileCopyrightText: 2026 Stefan Majewsky <majewsky@gmx.net>
// SPDX-License-Identifier: Apache-2.0
-// Package gg_pgx contains integration for using [gg/gsql] (and libraries based on it, such as [Oblast]) with the PostgreSQL driver library [pgx].
-//
-// [gg/gsql]: https://pkg.go.dev/go.xyrillian.de/gg/gsql
-// [Oblast]: https://pkg.go.dev/go.xyrillian.de/oblast
-// [pgx]: https://github.com/jackc/pgx
package gg_pgx
-// TODO: implement Handle (handle.go is copied from an early prototype in the Oblast benchmark suite and uses the extremely old Wrap() style)
-// TODO: implement ConnectionHandle
-// TODO: test coverage (via gg/pgruntime)
+import (
+ "context"
+
+ "github.com/jackc/pgx/v5"
+ "github.com/jackc/pgx/v5/pgxpool"
+ "go.xyrillian.de/gg/pgruntime"
+)
+
+// SingleConnector returns a [pgruntime.Connector] that spawns individual database connections.
+func SingleConnector() pgruntime.Connector[*Conn] {
+ return func(ctx context.Context, dbURL string) (*Conn, error) {
+ conn, err := pgx.Connect(ctx, dbURL)
+ return maybe(NewConn, conn), err
+ }
+}
+
+// PoolConnector returns a [pgruntime.Connector] that spawns database connection pools.
+func PoolConnector() pgruntime.Connector[*Pool] {
+ return func(ctx context.Context, dbURL string) (*Pool, error) {
+ pool, err := pgxpool.New(ctx, dbURL)
+ return maybe(NewPool, pool), err
+ }
+}