github.com/turbot/steampipe@v1.7.0-rc.0.0.20240517123944-7cef272d4458/pkg/db/db_local/execute.go (about) 1 package db_local 2 3 import ( 4 "context" 5 "log" 6 7 "github.com/jackc/pgx/v5" 8 "github.com/jackc/pgx/v5/pgconn" 9 "github.com/turbot/steampipe/pkg/constants" 10 "github.com/turbot/steampipe/pkg/db/db_common" 11 ) 12 13 func executeSqlAsRoot(ctx context.Context, statements ...string) ([]pgconn.CommandTag, error) { 14 log.Println("[DEBUG] executeSqlAsRoot start") 15 defer log.Println("[DEBUG] executeSqlAsRoot end") 16 17 rootClient, err := CreateLocalDbConnection(ctx, &CreateDbOptions{Username: constants.DatabaseSuperUser}) 18 if err != nil { 19 return nil, err 20 } 21 return ExecuteSqlInTransaction(ctx, rootClient, statements...) 22 } 23 24 func ExecuteSqlInTransaction(ctx context.Context, conn *pgx.Conn, statements ...string) (results []pgconn.CommandTag, err error) { 25 log.Println("[DEBUG] ExecuteSqlInTransaction start") 26 defer log.Println("[DEBUG] ExecuteSqlInTransaction end") 27 28 err = pgx.BeginFunc(ctx, conn, func(tx pgx.Tx) error { 29 for _, statement := range statements { 30 result, err := tx.Exec(ctx, statement) 31 if err != nil { 32 return err 33 } 34 results = append(results, result) 35 } 36 return nil 37 }) 38 return results, err 39 } 40 41 func ExecuteSqlWithArgsInTransaction(ctx context.Context, conn *pgx.Conn, queries ...db_common.QueryWithArgs) (results []pgconn.CommandTag, err error) { 42 log.Println("[DEBUG] ExecuteSqlWithArgsInTransaction start") 43 defer log.Println("[DEBUG] ExecuteSqlWithArgsInTransaction end") 44 45 err = pgx.BeginFunc(ctx, conn, func(tx pgx.Tx) error { 46 for _, q := range queries { 47 result, err := tx.Exec(ctx, q.Query, q.Args...) 48 if err != nil { 49 // set the results to nil - so that we don't return stuff in an error return 50 results = nil 51 return err 52 } 53 results = append(results, result) 54 } 55 return nil 56 }) 57 return results, err 58 }