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 }