README.md

Usage

buildCommands := func() Executable {
    var (
        modifyDatabase CommandRunner = func() error { return nil }
        sendEvents     CommandRunner = func() error { return nil }
    )

    var (
        modifyDatabaseCommand = NewCommand("Modify database", modifyDatabase)
        sendMessagesCommand   = NewCommand("Send events", sendEvents)
    )

    return CommandList{*modifyDatabaseCommand, *sendMessagesCommand}
}

runCommands := func(commands Executable) Executable {
    var (
        beginDb    BeginTransaction    = func() error { return nil }
        commitDb   CommitTransaction   = func() error { return nil }
        rollbackDb RollbackTransaction = func() error { return nil }
    )

    var (
        beginMessaging    BeginTransaction    = func() error { return nil }
        commitMessaging   CommitTransaction   = func() error { return nil }
        rollbackMessaging RollbackTransaction = func() error { return nil }
    )

    var (
        messagingTransaction = NewTransaction("Messaging transaction", beginMessaging, rollbackMessaging, commitMessaging, commands)
        dbTransaction        = NewTransaction("Database transaction", beginDb, rollbackDb, commitDb, messagingTransaction)
    )

    return dbTransaction
}

runCommands(buildCommands())

Running tests

go test -v ./...

or

ginkgo -r

Via docker

docker run --rm -it $(docker build -q .) go test -v ./...
Описание

Transactional layer for golang. Can nest few transactions (messaging + db + etc...) and run closure-like command inside of them.

Конвейеры
0 успешных
0 с ошибкой