github.com/ydb-platform/ydb-go-sdk/v3@v3.89.2/query/transaction.go (about)

     1  package query
     2  
     3  import (
     4  	"context"
     5  
     6  	internal "github.com/ydb-platform/ydb-go-sdk/v3/internal/query/tx"
     7  	"github.com/ydb-platform/ydb-go-sdk/v3/internal/tx"
     8  )
     9  
    10  type (
    11  	TxActor interface {
    12  		tx.Identifier
    13  		Executor
    14  	}
    15  	Transaction interface {
    16  		TxActor
    17  
    18  		CommitTx(ctx context.Context) (err error)
    19  		Rollback(ctx context.Context) (err error)
    20  	}
    21  	TransactionControl  = internal.Control
    22  	TransactionSettings = internal.Settings
    23  	TransactionOption   = internal.Option
    24  )
    25  
    26  // BeginTx returns selector transaction control option
    27  func BeginTx(opts ...TransactionOption) internal.ControlOption {
    28  	return internal.BeginTx(opts...)
    29  }
    30  
    31  func WithTx(t tx.Identifier) internal.ControlOption {
    32  	return internal.WithTx(t)
    33  }
    34  
    35  func WithTxID(txID string) internal.ControlOption {
    36  	return internal.WithTxID(txID)
    37  }
    38  
    39  // CommitTx returns commit transaction control option
    40  func CommitTx() internal.ControlOption {
    41  	return internal.CommitTx()
    42  }
    43  
    44  // TxControl makes transaction control from given options
    45  func TxControl(opts ...internal.ControlOption) *TransactionControl {
    46  	return internal.NewControl(opts...)
    47  }
    48  
    49  func NoTx() *TransactionControl {
    50  	return nil
    51  }
    52  
    53  // DefaultTxControl returns default transaction control for use default tx control on server-side
    54  func DefaultTxControl() *TransactionControl {
    55  	return NoTx()
    56  }
    57  
    58  // SerializableReadWriteTxControl returns transaction control with serializable read-write isolation mode
    59  func SerializableReadWriteTxControl(opts ...internal.ControlOption) *TransactionControl {
    60  	return internal.SerializableReadWriteTxControl(opts...)
    61  }
    62  
    63  // OnlineReadOnlyTxControl returns online read-only transaction control
    64  func OnlineReadOnlyTxControl(opts ...internal.OnlineReadOnlyOption) *TransactionControl {
    65  	return TxControl(
    66  		BeginTx(WithOnlineReadOnly(opts...)),
    67  		CommitTx(), // open transactions not supported for OnlineReadOnly
    68  	)
    69  }
    70  
    71  // StaleReadOnlyTxControl returns stale read-only transaction control
    72  func StaleReadOnlyTxControl() *TransactionControl {
    73  	return TxControl(
    74  		BeginTx(WithStaleReadOnly()),
    75  		CommitTx(), // open transactions not supported for StaleReadOnly
    76  	)
    77  }
    78  
    79  // SnapshotReadOnlyTxControl returns snapshot read-only transaction control
    80  func SnapshotReadOnlyTxControl() *TransactionControl {
    81  	return TxControl(
    82  		BeginTx(WithSnapshotReadOnly()),
    83  		CommitTx(), // open transactions not supported for StaleReadOnly
    84  	)
    85  }
    86  
    87  // TxSettings returns transaction settings
    88  func TxSettings(opts ...internal.Option) TransactionSettings {
    89  	return opts
    90  }
    91  
    92  func WithDefaultTxMode() TransactionOption {
    93  	return internal.WithDefaultTxMode()
    94  }
    95  
    96  func WithSerializableReadWrite() TransactionOption {
    97  	return internal.WithSerializableReadWrite()
    98  }
    99  
   100  func WithSnapshotReadOnly() TransactionOption {
   101  	return internal.WithSnapshotReadOnly()
   102  }
   103  
   104  func WithStaleReadOnly() TransactionOption {
   105  	return internal.WithStaleReadOnly()
   106  }
   107  
   108  func WithInconsistentReads() internal.OnlineReadOnlyOption {
   109  	return internal.WithInconsistentReads()
   110  }
   111  
   112  func WithOnlineReadOnly(opts ...internal.OnlineReadOnlyOption) TransactionOption {
   113  	return internal.WithOnlineReadOnly(opts...)
   114  }