using Amazon.DynamoDBv2.Model;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Amazon.DynamoDb.Wrapper.Interfaces
{
///
/// Provides Amazon DynamoDb operations using Low Level APIs.
/// See https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LowLevelDotNetItemsExample.html for more details
///
public interface IDynamoDBRepository
{
///
/// This method provides synchronous write operation that groups up to 100 action requests
/// The actions are completed atomically so that either all of them succeed, or all of them fail
/// See https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TransactWriteItems.html for more details
///
/// List of TransactWriteItem
Task RunTransactionAsync(List transactWriteItems);
///
/// This method puts or deletes multiple items in DynamoDB table in a batch.
/// A batch can not write more than 25 items in a request, otherwise DynamoDB will reject entire batch write operation.
/// See https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/batch-operation-lowlevel-dotnet.html for more details.
///
/// List of WriteRequest
Task BatchWriteAsync(Dictionary> batchRequests);
///
/// This method edits an existing item's attributes, or adds a new item to the table if it does not already exist.
/// See https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html for more information
///
/// UpdateItemRequest object
Task UpdateAsync(UpdateItemRequest updateItemRequest);
}
}