PROTOCOL
TransactionContext
¶
public protocol TransactionContext
Methods¶
submit(_:)
¶
func submit(_: ChangeRequest) throws -> UpdatedObject
Submit a change request in a transaction. The change will be available immediately inside this
transaction and will be available once the transaction closure is done to everyone outside of
the transaction closure. It throws a TransactionError
if there are errors. Otherwise, return
UpdatedObject to denote whether you inserted, updated or deleted an object.
abort()
¶
func abort() -> Bool
Abort the current transaction. This will cause whatever happened inside the current transaction
to rollback immediately, and anything submitted after abort will throw TransactionError.aborted
error.
EXTENSION
TransactionContext
¶
extension TransactionContext
Methods¶
try(submit:)
¶
public func `try`(submit changeRequest: ChangeRequest) -> UpdatedObject?
Convenient method for submit change request. submit()
may throw exceptions, but try(submit:)
will
not. Rather, it will fatal in case of TransactionError.objectAlreadyExists
. For any other types of
TransactionError
, it will simply return nil.
ENUM
TransactionError
¶
public enum TransactionError: Error
Cases¶
aborted
¶
case aborted
The transaction has been aborted already before submitting the request.
objectAlreadyExists
¶
case objectAlreadyExists
The object already exists. Conflict on either primary keys or unique properties.
diskFull
¶
case diskFull
We will rollback the whole transaction in case of disk full.
others
¶
case others
Other types of errors, in these cases, we will simply rollback the whole transaction.