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