@Mr_ic0

Как реализовать фильтрацию записей на основе SQL подобного текста?

Доброго дня!

Поступила такая задача:
API должно поддерживать фильтрацию с использованием скобок для определения первенства условий и использованием любой комбинации доступных полей. Необходима поддержка операция AND, OR, EQUALS, NOT EQUALS, GREATER THAN, LOWER THAN.
Пример: (date eq '2016-05-01') AND ((distance gt 20) OR (distance lt 10)).
То есть, имеется несколько различных методов для получения данных, все они должны поддерживать фильтрацию такого рода, причём для каждого типа возвращаемых данных имеется свой набор полей для которых доступна фильтрация.

Есть какие-то штатные средства, которые могут быть полезны для реализации такой штуки?
Само собой, надо проверить корректность синтаксиса запроса и проверить, чтобы небыло никаких SQL иньекций <- Это можно реализовать через валидацию запроса regex-ом.
Есть у кого какие полезные мысли? На .NET, ADO.NET, Entity Framework.
  • Вопрос задан
  • 105 просмотров
Пригласить эксперта
Ответы на вопрос 1
@kttotto
пофиг на чем писать
Надо писать свою грамматику и анализатор под него, который будет генерировать нормальный sql запрос. Мы применяли antlr4cs
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы