Files
go-api-pkg/client/postgresql/postgres.go

51 lines
813 B
Go

package postgresql
// Wrapper around jackx/pgx pool
import (
"context"
"errors"
"github.com/jackc/pgx/v5"
"github.com/jackc/pgx/v5/pgconn"
"github.com/jackc/pgx/v5/pgxpool"
)
type Database struct {
*pgxpool.Pool
}
func NewDB(connStr string) *Database {
db := &Database{}
db.Connect(connStr)
return db
}
func (db *Database) Connect(connStr string) (*pgxpool.Pool, error) {
pool, err := pgxpool.New(context.Background(), connStr)
if err != nil {
return nil, err
}
return pool, nil
}
func IsDuplicatedRow(err error) error {
var pgErr *pgconn.PgError
if errors.As(err, &pgErr) && pgErr.Code == "23505" {
return errors.New("duplicated row found")
}
return nil
}
func NoRowsInQuerySet(err error) error {
if err == pgx.ErrNoRows {
return errors.New("no rows found")
}
return nil
}