go-transaction-manager
21 строка · 577.0 Байт
1package gorm
2
3import (
4"context"
5
6"gorm.io/gorm"
7
8"github.com/avito-tech/go-transaction-manager/trm/v2"
9)
10
11// NewDefaultFactory creates default trm.Transaction(gorm.DB).
12// Factory rewrites DisableNestedTransaction in gorm.Config with Propagation in trm.Settings.
13func NewDefaultFactory(db *gorm.DB) trm.TrFactory {
14return func(ctx context.Context, trms trm.Settings) (context.Context, trm.Transaction, error) {
15s, _ := trms.(Settings)
16
17db.Config.DisableNestedTransaction = trms.Propagation() != trm.PropagationNested
18
19return NewTransaction(ctx, s.TxOpts(), db)
20}
21}
22