package database import ( "context" "fmt" "github.com/jackc/pgx/v5" "github.com/jackc/pgx/v5/pgconn" "github.com/jackc/pgx/v5/pgxpool" "log/slog" "os" ) type Client interface { Exec(ctx context.Context, sql string, args ...interface{}) (pgconn.CommandTag, error) Query(ctx context.Context, sql string, args ...interface{}) (pgx.Rows, error) QueryRow(ctx context.Context, sql string, args ...interface{}) pgx.Row Begin(ctx context.Context) (pgx.Tx, error) Ping(ctx context.Context) error } func NewClient(ctx context.Context, connUrl string, logger *slog.Logger) (*pgxpool.Pool, error) { pool, err := pgxpool.New(ctx, connUrl) if err != nil { fmt.Println(fmt.Fprintf(os.Stderr, "Unable to create connection pool: %v\n", err)) logger.Error("Unable to create connection pool: ", err) os.Exit(1) } return pool, nil }