Organize backend into product executable and shared Go modules
This commit is contained in:
1 parent
981e84a4b4
commit
f0720ec66b
382 files changed
+1944
-6989
No files matched your search
@@ -0,0 +1,12 @@
|
||||
package transaction
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"go.mongodb.org/mongo-driver/v2/mongo"
|
||||
)
|
||||
|
||||
func ActiveMongoTransaction(ctx context.Context) bool {
|
||||
session := mongo.SessionFromContext(ctx)
|
||||
return session != nil && session.TransactionRunning()
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package transaction
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"go.mongodb.org/mongo-driver/v2/mongo"
|
||||
)
|
||||
|
||||
func TestActiveMongoTransactionRejectsContextWithoutSession(t *testing.T) {
|
||||
if ActiveMongoTransaction(context.Background()) {
|
||||
t.Fatal("context without mongo session must not be active")
|
||||
}
|
||||
}
|
||||
|
||||
func TestActiveMongoTransactionRejectsSessionWithoutTransaction(t *testing.T) {
|
||||
ctx := mongo.NewSessionContext(context.Background(), &mongo.Session{})
|
||||
if ActiveMongoTransaction(ctx) {
|
||||
t.Fatal("session without transaction must not be active")
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package transaction
|
||||
|
||||
type Factory interface {
|
||||
CreateTransaction() Transaction
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package transaction
|
||||
|
||||
import (
|
||||
"context"
|
||||
)
|
||||
|
||||
type Callback = func(ctx context.Context) (any, error)
|
||||
|
||||
type Transaction interface {
|
||||
Execute(ctx context.Context, cb Callback) (any, error)
|
||||
}
|
||||
Reference in new issue
Block a user