Hi team
I am a newbie to golang.
I am writing a code that does transactions in postgres.
The list of queries to be executed under one transaction is gathered across
multiple handler code.

The way I am maintaining the query structure is as follows

type TxQuery struct {
   function TxFunc
   data types.TransactionData
}
type TxFunc func(tx *sqlx.Tx, input types.TransactionData) error

var TxQueries []TxQuery

func getHandlerInput() []TxQuery {

// fill with your set of DDL/DML queries.

}

txQueries := getHandlerInput(db.DB)

tx := db.DB.MustBegin()
   for index, _ := range txQueries {
       fmt.Println(txQueries[index].function, txQueries[index].data)
       err = txQueries[index].function(tx, txQueries[index].data)
       assert.Nil(t, err)
}

err = tx.Commit()


The issue I am facing is
The function always retains the last assigned closure for all the data in
the list i.e previous values of function gets overwritten.

i.e the last query command gets executed twice with first and second
argument list.

Logs:
2021/06/04 18:43:40 Added marketplace escrow  entry for
 {00000000-0000-0000-0000-000000000000
141b147a-96ab-4dda-a4f6-d142e7e04a97 6789 8 2 1000 255 15 7 7 7 {"wallex"}
282 283 284 false <nil> <nil> 0001-01-01 00:00:00 +0000 UTC 0001-01-01
00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000
UTC 0001-01-01 00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000 UTC}
2021/06/04 18:43:40 Added marketplace escrow  entry for
 {00000000-0000-0000-0000-000000000000 2f2fe301-8545-4030-940c-c32937392034
 6f2c68ab-ab84-46b6-b70b-6ec5c0205e09 {"project": "software"}
141b147a-96ab-4dda-a4f6-d142e7e04a97 6789 8 2 1000 255 15 7 7 7 {"wallex"}
282 283 284 false <nil> <nil> 0001-01-01 00:00:00 +0000 UTC 0001-01-01
00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000
UTC 0001-01-01 00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000 UTC}

Please let me know what I am missing?

Thanks,
K.R.Suveetha Kamatchi

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/CAMkciKt10%2Bg2bOUqbd2uqsWny3Fr3k%2B6eoVKxJ_qpAA8XHhpTQ%40mail.gmail.com.

Reply via email to