Пример #1
0
        private static void BuildOrderByList(StringBuilder builder, List <SortAttribute> sortAttributes)
        {
            if (sortAttributes?.Count > 0)
            {
                var translator = new AttributeTranslator();
                builder.Append("\norder by ");

                var orderBy = sortAttributes
                              .Select(x => new { x.Direction, Attribute = translator.FriendlyToReal(x.AttributeName) })
                              .ToList();

                foreach (var attribute in orderBy)
                {
                    builder.Append("\"");
                    builder.Append(attribute.Attribute.TableName);
                    builder.Append("\".\"");
                    builder.Append(attribute.Attribute.ColumnName);
                    builder.Append("\"");

                    builder.Append(attribute.Direction switch
                    {
                        SortDirection.Ascending => " asc",
                        SortDirection.Descending => " desc",
                        _ => throw new NotImplementedException()
                    });
        public void Translate(Condition condition)
        {
            var attribute = _attributeTranslator.FriendlyToReal(condition.AttributeName);

            _builder.Append("\n\"");
            _builder.Append(attribute.TableName);
            _builder.Append("\".\"");
            _builder.Append(attribute.ColumnName);
            _builder.Append("\"");

            _operationTranslator.Translate(condition.Operation);
            TranslateConstant(_builder, condition.Value, attribute.Type);
            _linkTranslator.Translate(condition.Link);
        }