omnix-sopiga/framework/db/tx.go

27 lines
439 B
Go
Raw Normal View History

2026-08-07 12:21:42 +07:00
package db
import (
"context"
"fmt"
"github.com/jackc/pgx/v5/pgxpool"
)
func WithTx(ctx context.Context, pool *pgxpool.Pool, fn func(ctx context.Context) error) error {
tx, err := pool.Begin(ctx)
if err != nil {
return fmt.Errorf("begin tx: %w", err)
}
defer tx.Rollback(ctx)
if err := fn(ctx); err != nil {
return err
}
if err := tx.Commit(ctx); err != nil {
return fmt.Errorf("commit tx: %w", err)
}
return nil
}