public async Task <Operation> DeleteByIndexAsync <T>(string indexName, Expression <Func <T, bool> > expression) { var shards = GetCommandsToOperateOn(new ShardRequestData { EntityType = typeof(T), Keys = { indexName } }); var operations = shardStrategy.ShardAccessStrategy.ApplyAsync(shards, new ShardRequestData { EntityType = typeof(T), Keys = { indexName } }, (dbCmd, i) => { var query = QueryInternal <T>(dbCmd, indexName).Where(expression); var indexQuery = new IndexQuery() { Query = query.ToString() }; return(dbCmd.DeleteByIndexAsync(indexName, indexQuery)); }); var result = await operations.ConfigureAwait(false); var shardOperation = new ShardsOperation(result); return(shardOperation); }
public Operation DeleteByIndex <T>(string indexName, Expression <Func <T, bool> > expression) { var query = Query <T>(indexName).Where(expression); var indexQuery = new IndexQuery() { Query = query.ToString() }; var shards = GetCommandsToOperateOn(new ShardRequestData { EntityType = typeof(T), Keys = { indexName } }); var operations = shardStrategy.ShardAccessStrategy.Apply(shards, new ShardRequestData { EntityType = typeof(T), Keys = { indexName } }, (dbCmd, i) => dbCmd.DeleteByIndex(indexName, indexQuery)); var shardOperation = new ShardsOperation(operations); return(shardOperation); }