INNER CODE UNIT · Swift

withTransaction

orlandos-nl/MongoKitten · Sources/Meow/Database.swift:33

    public func withTransaction<T>(
        with options: MongoSessionOptions = .init(),
        transactionOptions: MongoTransactionOptions? = nil,
        perform: (MeowTransactionDatabase) async throws -> T
    ) async throws -> T {
        let transaction = try await raw.startTransaction(autoCommitChanges: false, with: options, transactionOptions: transactionOptions)
        let meowDatabase = MeowTransactionDatabase(transaction)
        
        do {
            let result = try await perform(meowDatabase)
            try await transaction.commit()
            return result
        } catch {
            try await transaction.abort()
            throw error
        }
    }
}

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…