using System.Collections.Generic;
using System.Threading.Tasks;
namespace ZeroLevel.Services.PartitionStorage
{
///
/// Provides write operations in catalog partition
///
/// Key type
/// Type of one input value
/// Type of records aggregate
public interface IStorePartitionBuilder
: IStorePartitionBase
{
long TotalRecords
{
get;
}
IAsyncEnumerable> Iterate();
///
/// Writing a key-value pair
///
Task Store(TKey key, TInput value);
///
/// Called after all key-value pairs are written to the partition
///
void CompleteAdding();
///
/// Performs compression/grouping of recorded data in a partition
///
Task Compress();
///
/// Rebuilds indexes for data in a partition
///
void RebuildIndex();
}
}