using System.Collections;
using System.Collections.Immutable;
using System.Data;
namespace Connected.Entities.Storage;
///
/// Defines the read and write operations on the supported storage providers.
///
/// >The type of the entitiy on which operations are performed.
public interface IStorage : IQueryable, IQueryable, IEnumerable, IEnumerable, IOrderedQueryable, IOrderedQueryable
where TEntity : IEntity
{
///
/// Updates the entity against the underlying storage.
///
///
///
Task Update(TEntity? entity);
Task Update(TEntity? entity, TArgs args, Func>? concurrencyRetrying)
where TArgs : IDto;
Task Update(TEntity? entity, TArgs args, Func>? concurrencyRetrying, Func>? merging)
where TArgs : IDto;
Task> OpenReaders(StorageContextArgs args);
Task Execute(StorageContextArgs args);
Task> Query(StorageContextArgs args);
Task Select(StorageContextArgs args);
}