Class ProSqlBuilder
T-SQL-specific SQL builder for Pro version.
Inherits field mapping and filter extraction from ProSqlBuilderBase.
Contains T-SQL-specific SQL generation (PVT, WHERE, SELECT, ORDER BY).
public class ProSqlBuilder : ProSqlBuilderBase
Inheritance
Inherited Members
Methods
ApplyFunction(PropertyFunction, string)
Pro: Apply SQL function to column (T-SQL syntax).
public string ApplyFunction(PropertyFunction function, string column)
ApplyPropertyFunction(string, PropertyFunction?)
Applies property function to column.
public string ApplyPropertyFunction(string column, PropertyFunction? function)
BuildAggregateSelectColumn(AggregateFunction, string, string, IReadOnlyDictionary<string, FieldInfo>, SqlParameterCollector, int?)
Generates full aggregation column (for SELECT).
public string BuildAggregateSelectColumn(AggregateFunction func, string fieldPath, string alias, IReadOnlyDictionary<string, FieldInfo> fields, SqlParameterCollector collector, int? arrayIndex = null)
BuildFieldReference(string, IReadOnlyDictionary<string, FieldInfo>, SqlParameterCollector?, string)
Generates column for GROUP BY or ORDER BY (base or Props).
public string BuildFieldReference(string fieldPath, IReadOnlyDictionary<string, FieldInfo> fields, SqlParameterCollector? collector, string tableAlias = "pvt")
BuildLimitOffset<TProps>(QueryContext<TProps>, SqlParameterCollector?)
Generates OFFSET/FETCH clause (T-SQL syntax).
public string BuildLimitOffset<TProps>(QueryContext<TProps> context, SqlParameterCollector? collector = null) where TProps : class, new()
BuildNestedFieldAliases(IReadOnlyList<FieldInfo>)
Builds mapping from nested Dictionary field names to their CTE aliases.
public static Dictionary<string, string> BuildNestedFieldAliases(IReadOnlyList<FieldInfo> fields)
BuildOrderByClause<TProps>(QueryContext<TProps>, IReadOnlyDictionary<string, FieldInfo>, string?, SqlParameterCollector?, IReadOnlySet<string>?, string)
Generates ORDER BY clause.
public string BuildOrderByClause<TProps>(QueryContext<TProps> context, IReadOnlyDictionary<string, FieldInfo> fields, string? distinctPartitionExpr, SqlParameterCollector? collector = null, IReadOnlySet<string>? cteFieldNames = null, string cteAlias = "pvt_cte") where TProps : class, new()
BuildPropsValueSubquery(FieldInfo, string, int?)
Generates subquery for getting Props value.
public string BuildPropsValueSubquery(FieldInfo field, string structureIdParam, int? arrayIndex = null)
BuildPvtColumn(FieldInfo, string)
Generates PVT column for GROUP BY (T-SQL uses correlated subquery instead of array_agg).
public string BuildPvtColumn(FieldInfo field, string structureIdParam)
BuildPvtSubquery(long, IReadOnlyCollection<FieldInfo>, IReadOnlyCollection<string>, SqlParameterCollector, string?)
Generates PVT subquery for GROUP BY (T-SQL syntax).
public string BuildPvtSubquery(long schemeId, IReadOnlyCollection<FieldInfo> pvtFields, IReadOnlyCollection<string> baseFieldColumns, SqlParameterCollector collector, string? additionalWhereClause = null)
BuildSelectClause<TProps>(QueryContext<TProps>, IReadOnlyDictionary<string, FieldInfo>, SqlParameterCollector, IReadOnlySet<string>?, string)
Generates SELECT clause with DISTINCT support.
public (string SelectClause, string? DistinctPartitionExpr) BuildSelectClause<TProps>(QueryContext<TProps> context, IReadOnlyDictionary<string, FieldInfo> fields, SqlParameterCollector collector, IReadOnlySet<string>? cteFieldNames = null, string cteAlias = "pvt_cte") where TProps : class, new()
CompileBaseFieldsOnly(FilterExpression, SqlParameterCollector?)
Compiles ONLY base fields (Name, Id, DateCreate etc.) for direct WHERE clause.
public string? CompileBaseFieldsOnly(FilterExpression filter, SqlParameterCollector? collector)
CompileFilterToSql(FilterExpression, IReadOnlyDictionary<string, FieldInfo>, SqlParameterCollector?)
Compiles FilterExpression to SQL WHERE clause.
public string CompileFilterToSql(FilterExpression filter, IReadOnlyDictionary<string, FieldInfo> fields, SqlParameterCollector? collector = null)
CompileOrderingExpression(OrderingExpression, IReadOnlyDictionary<string, FieldInfo>, SqlParameterCollector?, IReadOnlySet<string>?, string)
Compiles single ordering expression to SQL (public overload).
public string? CompileOrderingExpression(OrderingExpression ordering, IReadOnlyDictionary<string, FieldInfo> fields, SqlParameterCollector? collector, IReadOnlySet<string>? cteFieldNames, string cteAlias)
CompilePropsFieldsOnly(FilterExpression, IReadOnlyDictionary<string, FieldInfo>, SqlParameterCollector?, IReadOnlyDictionary<string, string>?)
Compiles ONLY Props fields for PVT EXISTS.
public string? CompilePropsFieldsOnly(FilterExpression filter, IReadOnlyDictionary<string, FieldInfo> fields, SqlParameterCollector? collector, IReadOnlyDictionary<string, string>? nestedFieldAliases = null)
ExtractPropsFieldPaths(IEnumerable<AggregateRequest>)
Collects Props fields from aggregation list (excluding base and COUNT(*)).
public HashSet<string> ExtractPropsFieldPaths(IEnumerable<AggregateRequest> aggregations)
FormatValueLegacy(object?)
Formats value for SQL (legacy, without parameters).
public string FormatValueLegacy(object? value)