using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using ZeroLevel.Services.PartitionStorage.Interfaces;
namespace ZeroLevel.Services.PartitionStorage
{
///
/// Partition store interface
///
/// Key type
/// Value type
/// The type of compressed array of values for the key
/// Metadata for creating or searching for a partition
public interface IStore
{
///
/// Returns an object to create a partition
///
IStorePartitionBuilder CreateBuilder(TMeta info);
///
/// Returns an object to overwrite data in an existing partition
///
IStorePartitionMergeBuilder CreateMergeAccessor(TMeta info, Func> decompressor);
///
/// Creates an object to access the data in the partition
///
IStorePartitionAccessor CreateAccessor(TMeta info);
///
/// Performs a search for data in the repository
///
Task> Search(StoreSearchRequest searchRequest);
///
/// Deleting a partition
///
void RemovePartition(TMeta info);
}
}