Exemplo n.º 1
0
 /// <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);
 }
Exemplo n.º 2
0
        // 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);
        }
Exemplo n.º 3
0
        /// <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);
        }