// // DISCLAIMER // // Copyright 2017 ArangoDB GmbH, Cologne, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // // Copyright holder is ArangoDB GmbH, Cologne, Germany // // Author Lars Maier // package driver import ( "context" "time" ) // BeginTransactionOptions provides options for BeginTransaction call type BeginTransactionOptions struct { WaitForSync bool AllowImplicit bool LockTimeout time.Duration MaxTransactionSize uint64 } // TransactionCollections is used to specify which collections are accessed by // a transaction and how type TransactionCollections struct { Read []string `json:"read,omitempty"` Write []string `json:"write,omitempty"` Exclusive []string `json:"exclusive,omitempty"` } // CommitTransactionOptions provides options for CommitTransaction. Currently unused type CommitTransactionOptions struct{} // AbortTransactionOptions provides options for CommitTransaction. Currently unused type AbortTransactionOptions struct{} // TransactionID identifies a transaction type TransactionID string // TransactionStatus describes the status of an transaction type TransactionStatus string const ( TransactionRunning TransactionStatus = "running" TransactionCommitted TransactionStatus = "committed" TransactionAborted TransactionStatus = "aborted" ) // TransactionStatusRecord provides insight about the status of transaction type TransactionStatusRecord struct { Status TransactionStatus } // DatabaseStreamingTransactions provides access to the Streaming Transactions API type DatabaseStreamingTransactions interface { BeginTransaction(ctx context.Context, cols TransactionCollections, opts *BeginTransactionOptions) (TransactionID, error) CommitTransaction(ctx context.Context, tid TransactionID, opts *CommitTransactionOptions) error AbortTransaction(ctx context.Context, tid TransactionID, opts *AbortTransactionOptions) error TransactionStatus(ctx context.Context, tid TransactionID) (TransactionStatusRecord, error) }