Interface IRedbQueryProvider
Provider for executing LINQ queries.
public interface IRedbQueryProvider
Methods
CreateQuery<TProps>(long, long?, bool)
Create new query for specified scheme.
IRedbQueryable<TProps> CreateQuery<TProps>(long schemeId, long? userId = null, bool checkPermissions = false) where TProps : class, new()
ExecuteAggregateAsync(long, string, AggregateFunction, FilterExpression?)
Execute single-field aggregation with FilterExpression (Pro version).
Task<decimal?> ExecuteAggregateAsync(long schemeId, string fieldPath, AggregateFunction function, FilterExpression? filter)
ExecuteAggregateAsync(long, string, AggregateFunction, string?)
Execute aggregation on EAV field (SQL strategy for simple fields).
Task<decimal?> ExecuteAggregateAsync(long schemeId, string fieldPath, AggregateFunction function, string? filterJson = null)
ExecuteAggregateBatchAsync(long, IEnumerable<AggregateRequest>, FilterExpression?)
Execute batch aggregation with FilterExpression (Pro version).
Task<AggregateResult> ExecuteAggregateBatchAsync(long schemeId, IEnumerable<AggregateRequest> requests, FilterExpression? filter)
ExecuteAggregateBatchAsync(long, IEnumerable<AggregateRequest>, string?)
Execute batch aggregation (multiple fields in one query).
Task<AggregateResult> ExecuteAggregateBatchAsync(long schemeId, IEnumerable<AggregateRequest> requests, string? filterJson = null)
ExecuteArrayGroupedAggregateAsync(long, string, IEnumerable<GroupFieldRequest>, IEnumerable<AggregateRequest>, string?)
Execute GroupBy aggregation on array (SQL function aggregate_array_grouped).
Task<JsonDocument?> ExecuteArrayGroupedAggregateAsync(long schemeId, string arrayPath, IEnumerable<GroupFieldRequest> groupFields, IEnumerable<AggregateRequest> aggregations, string? filterJson = null)
ExecuteAsync(Expression, Type)
Execute query asynchronously.
Task<object> ExecuteAsync(Expression expression, Type elementType)
ExecuteDeleteAsync(long, FilterExpression?)
Delete objects by filter (Pro version with FilterExpression for PVT-based deletion).
Task<int> ExecuteDeleteAsync(long schemeId, FilterExpression? filter)
ExecuteDeleteAsync(long, string?)
Delete objects by filter (OpenSource version with JSON filter).
Task<int> ExecuteDeleteAsync(long schemeId, string? filterJson = null)
ExecuteGroupedAggregateAsync(long, IEnumerable<GroupFieldRequest>, IEnumerable<AggregateRequest>, FilterExpression?)
Execute GroupBy aggregation with FilterExpression (Pro version).
Task<JsonDocument?> ExecuteGroupedAggregateAsync(long schemeId, IEnumerable<GroupFieldRequest> groupFields, IEnumerable<AggregateRequest> aggregations, FilterExpression? filter)
ExecuteGroupedAggregateAsync(long, IEnumerable<GroupFieldRequest>, IEnumerable<AggregateRequest>, string?)
Execute GroupBy aggregation (SQL function aggregate_grouped).
Task<JsonDocument?> ExecuteGroupedAggregateAsync(long schemeId, IEnumerable<GroupFieldRequest> groupFields, IEnumerable<AggregateRequest> aggregations, string? filterJson = null)
ExecuteGroupedWindowQueryAsync(long, IEnumerable<GroupFieldRequest>, IEnumerable<AggregateRequest>, IEnumerable<WindowFuncRequest>, IEnumerable<WindowFieldRequest>, IEnumerable<WindowOrderRequest>, FilterExpression?)
Execute GroupBy with Window Functions with FilterExpression (Pro version).
Task<JsonDocument?> ExecuteGroupedWindowQueryAsync(long schemeId, IEnumerable<GroupFieldRequest> groupFields, IEnumerable<AggregateRequest> aggregations, IEnumerable<WindowFuncRequest> windowFuncs, IEnumerable<WindowFieldRequest> partitionBy, IEnumerable<WindowOrderRequest> orderBy, FilterExpression? filter)
ExecuteGroupedWindowQueryAsync(long, IEnumerable<GroupFieldRequest>, IEnumerable<AggregateRequest>, IEnumerable<WindowFuncRequest>, IEnumerable<WindowFieldRequest>, IEnumerable<WindowOrderRequest>, string?)
Execute GroupBy with Window Functions (ranking, running totals on aggregated data).
Task<JsonDocument?> ExecuteGroupedWindowQueryAsync(long schemeId, IEnumerable<GroupFieldRequest> groupFields, IEnumerable<AggregateRequest> aggregations, IEnumerable<WindowFuncRequest> windowFuncs, IEnumerable<WindowFieldRequest> partitionBy, IEnumerable<WindowOrderRequest> orderBy, string? filterJson = null)
ExecuteWindowQueryAsync(long, IEnumerable<WindowFieldRequest>, IEnumerable<WindowFuncRequest>, IEnumerable<WindowFieldRequest>, IEnumerable<WindowOrderRequest>, FilterExpression?, string?, int?, int?)
Execute query with window functions with FilterExpression (Pro version).
Task<JsonDocument?> ExecuteWindowQueryAsync(long schemeId, IEnumerable<WindowFieldRequest> selectFields, IEnumerable<WindowFuncRequest> windowFuncs, IEnumerable<WindowFieldRequest> partitionBy, IEnumerable<WindowOrderRequest> orderBy, FilterExpression? filter, string? frameJson = null, int? take = null, int? skip = null)
ExecuteWindowQueryAsync(long, IEnumerable<WindowFieldRequest>, IEnumerable<WindowFuncRequest>, IEnumerable<WindowFieldRequest>, IEnumerable<WindowOrderRequest>, string?, string?, int?, int?)
Execute query with window functions (SQL function query_with_window).
Task<JsonDocument?> ExecuteWindowQueryAsync(long schemeId, IEnumerable<WindowFieldRequest> selectFields, IEnumerable<WindowFuncRequest> windowFuncs, IEnumerable<WindowFieldRequest> partitionBy, IEnumerable<WindowOrderRequest> orderBy, string? filterJson = null, string? frameJson = null, int? take = null, int? skip = null)
GetFilterJsonAsync<TProps>(QueryContext<TProps>)
Returns the JSON filter that will be sent to SQL function (for diagnostics)
Task<string> GetFilterJsonAsync<TProps>(QueryContext<TProps> context) where TProps : class, new()
GetGroupedWindowSqlPreviewAsync(long, IEnumerable<GroupFieldRequest>, IEnumerable<AggregateRequest>, IEnumerable<WindowFuncRequest>, IEnumerable<WindowFieldRequest>, IEnumerable<WindowOrderRequest>, FilterExpression?)
Get SQL preview for GroupBy + Window query with FilterExpression (Pro version).
Task<string> GetGroupedWindowSqlPreviewAsync(long schemeId, IEnumerable<GroupFieldRequest> groupFields, IEnumerable<AggregateRequest> aggregations, IEnumerable<WindowFuncRequest> windowFuncs, IEnumerable<WindowFieldRequest> partitionBy, IEnumerable<WindowOrderRequest> orderBy, FilterExpression? filter)
GetGroupedWindowSqlPreviewAsync(long, IEnumerable<GroupFieldRequest>, IEnumerable<AggregateRequest>, IEnumerable<WindowFuncRequest>, IEnumerable<WindowFieldRequest>, IEnumerable<WindowOrderRequest>, string?)
Get SQL preview for GroupBy + Window query.
Task<string> GetGroupedWindowSqlPreviewAsync(long schemeId, IEnumerable<GroupFieldRequest> groupFields, IEnumerable<AggregateRequest> aggregations, IEnumerable<WindowFuncRequest> windowFuncs, IEnumerable<WindowFieldRequest> partitionBy, IEnumerable<WindowOrderRequest> orderBy, string? filterJson = null)
GetSchemeAsync(long)
Get scheme by ID (for projections).
Task<IRedbScheme?> GetSchemeAsync(long schemeId)
GetSqlPreviewAsync<TProps>(QueryContext<TProps>)
Get SQL query for debugging (analogous to ToQueryString in EF Core).
Task<string> GetSqlPreviewAsync<TProps>(QueryContext<TProps> context) where TProps : class, new()
GetWindowSqlPreviewAsync(long, IEnumerable<WindowFieldRequest>, IEnumerable<WindowFuncRequest>, IEnumerable<WindowFieldRequest>, IEnumerable<WindowOrderRequest>, string?, string?, int?, int?)
Get SQL preview for window query (for debugging).
Task<string> GetWindowSqlPreviewAsync(long schemeId, IEnumerable<WindowFieldRequest> selectFields, IEnumerable<WindowFuncRequest> windowFuncs, IEnumerable<WindowFieldRequest> partitionBy, IEnumerable<WindowOrderRequest> orderBy, string? filterJson = null, string? frameJson = null, int? take = null, int? skip = null)