/// <summary> /// Builds the following query: Get the server instances. /// </summary> /// <param name="query">The database query to consider.</param> /// <param name="pageSize">The page size to consider.</param> /// <param name="pageToken">The page token text to consider.</param> /// <param name="log">The log to consider.</param> /// <param name="clauseStatement">The clause statement to consider.</param> /// <returns>The built query.</returns> public static IDbSingleQuery Paginate( this IDbSingleQuery query, int?pageSize, string pageToken, IBdoLog log = null, DbApiSortDefinition clauseStatement = null) { return(query); }
// Sort definition /// <summary> /// Creates an Api sort definition. /// </summary> /// <param name="clauses">The clauses to consider.</param> public static DbApiSortDefinition CreateSortDefinition(params DbApiClause[] clauses) { var definition = new DbApiSortDefinition(); foreach (DbApiClause clause in clauses) { if (clause != null) { definition.Add(clause.FieldAlias, clause); } } return(definition); }
/// <summary> /// Sorts the specified query considering the specified query script. /// </summary> /// <param name="query">The database query to consider.</param> /// <param name="sortQuery">The sort query text to consider.</param> /// <param name="definition">The definition to consider.</param> /// <param name="log">The log to consider.</param> /// <returns>The built query.</returns> public static IDbSingleQuery Sort( this IDbSingleQuery query, string sortQuery, DbApiSortDefinition definition = null, IBdoLog log = null) { if (query != null && !string.IsNullOrEmpty(sortQuery)) { query.OrderByClause = new DbQueryOrderByClause(); foreach (string fieldItem in sortQuery.Split(',')) { var statement = new DbQueryOrderByStatement(); var fieldItemParams = fieldItem?.Trim().Split(' '); if (fieldItemParams.Length > 0) { string fieldName = fieldItemParams[0]?.Trim(); if (!definition.ContainsKey(fieldName)) { log?.AddError("Undefined field '" + fieldName + "' in order statement", resultCode: "user"); } else { statement.Field = definition?[fieldName]?.Field ?? DbFluent.Field(fieldName); statement.Sorting = DataSortingModes.Ascending; if (fieldItemParams.Length > 1) { string direction = fieldItemParams[1]?.Trim(); if (string.Equals(direction, "desc")) { statement.Sorting = DataSortingModes.Descending; query.OrderByClause.Statements.Add(statement); } else if (!string.Equals(direction, "asc")) { log?.AddError("Invalid order direction '" + direction + "'", resultCode: "user"); } else { query.OrderByClause.Statements.Add(statement); } } } } } } return(query); }