[bugfix] wrap bun.Tx to add our own error processing (#2169)

* wrap bun.Tx to add our own error processing

Signed-off-by: kim <grufwub@gmail.com>

* add compile-time check for updateRowError() compatibility with sql.Row, fix wrapTx() not being used properly

Signed-off-by: kim <grufwub@gmail.com>

---------

Signed-off-by: kim <grufwub@gmail.com>
This commit is contained in:
kim 2023-08-31 10:46:15 +01:00 committed by GitHub
commit 1ee99fc165
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 271 additions and 47 deletions

View file

@ -87,7 +87,7 @@ func (m *markerDB) UpdateMarker(ctx context.Context, marker *gtsmodel.Marker) er
// Optimistic concurrency control: start a transaction, try to update a row with a previously retrieved version.
// If the update in the transaction fails to actually change anything, another update happened concurrently, and
// this update should be retried by the caller, which in this case involves sending HTTP 409 to the API client.
return m.db.RunInTx(ctx, func(tx bun.Tx) error {
return m.db.RunInTx(ctx, func(tx Tx) error {
result, err := tx.NewUpdate().
Model(marker).
WherePK().