package pgxprocess

import (
	

	

	
)

var _ database = (*Conn)(nil)

// Conn wraps [pgx.Conn] to delay connection setup to application runtime.
type Conn struct {
	Config *pgx.ConnConfig

	handle[pgx.Conn, *pgx.Conn]
}

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

	.pointer.Store()

	 := ()

	.pointer.CompareAndSwap(, nil)

	_ = .Close()

	return 
}