package pgxprocess

import (
	

	

	
)

var _ database = (*Pool)(nil)

// Pool wraps [pgxpool.Pool] to delay pool setup to application runtime.
type Pool struct {
	Config *pgxpool.Config

	handle[pgxpool.Pool, *pgxpool.Pool]
}

// Run implements the [process.Runner] interface.
func ( *Pool) ( context.Context,  process.Callback) error {
	,  := pgxpool.NewWithConfig(, .Config)
	if  != nil {
		return 
	}

	.pointer.Store()

	 := ()

	.pointer.CompareAndSwap(, nil)

	.Close()

	return 
}