// // DISCLAIMER // // Copyright 2020 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 Adam Janikowski // package driver // TransactionOptions contains options that customize the transaction. type TransactionOptions struct { // Transaction size limit in bytes. Honored by the RocksDB storage engine only. MaxTransactionSize int // An optional numeric value that can be used to set a timeout for waiting on collection // locks. If not specified, a default value will be used. // Setting lockTimeout to 0 will make ArangoDB not time out waiting for a lock. LockTimeout *int // An optional boolean flag that, if set, will force the transaction to write // all data to disk before returning. WaitForSync bool // Maximum number of operations after which an intermediate commit is performed // automatically. Honored by the RocksDB storage engine only. IntermediateCommitCount *int // Optional arguments passed to action. Params []interface{} // Maximum total size of operations after which an intermediate commit is // performed automatically. Honored by the RocksDB storage engine only. IntermediateCommitSize *int // ReadCollections Collections that the transaction reads from. ReadCollections []string // WriteCollections Collections that the transaction writes to. WriteCollections []string // ExclusiveCollections Collections that the transaction write exclusively to. ExclusiveCollections []string } type transactionRequest struct { MaxTransactionSize int `json:"maxTransactionSize"` LockTimeout *int `json:"lockTimeout,omitempty"` WaitForSync bool `json:"waitForSync"` IntermediateCommitCount *int `json:"intermediateCommitCount,omitempty"` Params []interface{} `json:"params"` IntermediateCommitSize *int `json:"intermediateCommitSize,omitempty"` Action string `json:"action"` Collections transactionCollectionsRequest `json:"collections"` } type transactionCollectionsRequest struct { Read []string `json:"read,omitempty"` Write []string `json:"write,omitempty"` Exclusive []string `json:"exclusive,omitempty"` } type transactionResponse struct { ArangoError Result interface{} `json:"result"` }