fix(11-08): make cabana writes commit-safe

This commit is contained in:
Jakub Zych
2026-09-30 20:14:23 +02:00
parent 9033d81721
commit f7b6b0c313
2 changed files with 6 additions and 8 deletions

View File

@@ -151,8 +151,7 @@ func (s CRUDService) Delete(ctx context.Context, cc *CompiledController, id any)
return BulkResult{}, err return BulkResult{}, err
} }
var result BulkResult var result BulkResult
err := s.DB.WithContext(ctx).Transaction(func(tx *gorm.DB) error { err := lagoon.Transaction(ctx, s.DB, func(ctx context.Context, tx *gorm.DB) error {
tx = tx.WithContext(ctx)
target, err := newWritableModel(cc) target, err := newWritableModel(cc)
if err != nil { if err != nil {
return err return err
@@ -199,8 +198,7 @@ func (s CRUDService) BulkDelete(ctx context.Context, cc *CompiledController, in
return BulkResult{}, err return BulkResult{}, err
} }
var result BulkResult var result BulkResult
err = s.DB.WithContext(ctx).Transaction(func(tx *gorm.DB) error { err = lagoon.Transaction(ctx, s.DB, func(ctx context.Context, tx *gorm.DB) error {
tx = tx.WithContext(ctx)
if err := ctx.Err(); err != nil { if err := ctx.Err(); err != nil {
return lifecycleFailure(cc, err) return lifecycleFailure(cc, err)
} }
@@ -308,8 +306,7 @@ func (s CRUDService) save(ctx context.Context, cc *CompiledController, id any, i
return RecordResult{}, err return RecordResult{}, err
} }
var result RecordResult var result RecordResult
err = s.DB.WithContext(ctx).Transaction(func(tx *gorm.DB) error { err = lagoon.Transaction(ctx, s.DB, func(ctx context.Context, tx *gorm.DB) error {
tx = tx.WithContext(ctx)
target, err := newWritableModel(cc) target, err := newWritableModel(cc)
if err != nil { if err != nil {
return err return err

View File

@@ -10,6 +10,7 @@ import (
"sort" "sort"
"strings" "strings"
"git.golem15.com/golem15/summercms/modules/lagoon"
"git.golem15.com/golem15/summercms/modules/pact" "git.golem15.com/golem15/summercms/modules/pact"
"git.golem15.com/golem15/summercms/modules/phrasebook" "git.golem15.com/golem15/summercms/modules/phrasebook"
"github.com/goccy/go-yaml" "github.com/goccy/go-yaml"
@@ -645,7 +646,7 @@ func (s RelationService) Link(ctx context.Context, cc *CompiledController, relat
return RelationMutationResult{}, err return RelationMutationResult{}, err
} }
var result RelationMutationResult var result RelationMutationResult
err = s.DB.WithContext(ctx).Transaction(func(tx *gorm.DB) error { err = lagoon.Transaction(ctx, s.DB, func(ctx context.Context, tx *gorm.DB) error {
parent, err := newWritableModel(cc) parent, err := newWritableModel(cc)
if err != nil { if err != nil {
return err return err
@@ -714,7 +715,7 @@ func (s RelationService) Unlink(ctx context.Context, cc *CompiledController, rel
return RelationMutationResult{}, err return RelationMutationResult{}, err
} }
var result RelationMutationResult var result RelationMutationResult
err = s.DB.WithContext(ctx).Transaction(func(tx *gorm.DB) error { err = lagoon.Transaction(ctx, s.DB, func(ctx context.Context, tx *gorm.DB) error {
parent, err := newWritableModel(cc) parent, err := newWritableModel(cc)
if err != nil { if err != nil {
return err return err