DotnetLeague.SimpleRsqlParse
1.0.0
dotnet add package DotnetLeague.SimpleRsqlParse --version 1.0.0
NuGet\Install-Package DotnetLeague.SimpleRsqlParse -Version 1.0.0
<PackageReference Include="DotnetLeague.SimpleRsqlParse" Version="1.0.0" />
<PackageVersion Include="DotnetLeague.SimpleRsqlParse" Version="1.0.0" />
<PackageReference Include="DotnetLeague.SimpleRsqlParse" />
paket add DotnetLeague.SimpleRsqlParse --version 1.0.0
#r "nuget: DotnetLeague.SimpleRsqlParse, 1.0.0"
#:package DotnetLeague.SimpleRsqlParse@1.0.0
#addin nuget:?package=DotnetLeague.SimpleRsqlParse&version=1.0.0
#tool nuget:?package=DotnetLeague.SimpleRsqlParse&version=1.0.0
Simple Rsql Parse
SimpleRsqlParse é uma biblioteca .NET para parseamento da sintaxe RSQL, com o objetivo de facilitar a construção de consultas SQL seguras e parametrizadas a partir de filtros dinâmicos.
⚠️ Aviso: Esta versão suporta apenas a geração de cláusulas
WHEREpara SQL Server e ainda não há suporte a LINQ. O projeto está em estágio inicial, mas será evoluído com mais funcionalidades futuramente.
📌 Nota: Esta biblioteca foi inspirada na excelente rsql-parser escrita em Java.
Instalação
Você pode instalar o pacote via NuGet:
dotnet add package SimpleRsqlParse
Exemplo de uso
using SimpleRsqlParse;
string rsql = "name==john;age=gt=30";
var parser = new RsqlParser();
var result = parser.Parse(rsql);
Console.WriteLine("WHERE " + result.SqlWhereClause);
// Saída esperada: WHERE [name] = @p0 AND [age] > @p1
foreach (var param in result.Parameters)
{
Console.WriteLine($"{param.Key} = {param.Value}");
// @p0 = "john"
// @p1 = 30
}
Recursos atuais
- Suporte à sintaxe básica RSQL (comparações, AND/OR).
- Suporte a aliases de campos.
- Geração de cláusulas WHERE seguras e parametrizadas (evita SQL Injection).
- Compatível com SQL Server.
Regras e Semântica
A seguir está a especificação gramatical da RSQL usada neste projeto, escrita em notação EBNF (ISO 14977):
Uma expressão RSQL é composta por uma ou mais comparações, relacionadas por operadores lógicos:
- AND lógico:
;ouand - OR lógico:
,ouor
Por padrão, o operador AND tem precedência (ou seja, é avaliado antes de qualquer operador OR). No entanto, expressões entre parênteses podem ser usadas para alterar a precedência.
input = or, EOF;
or = and, { "," , and };
and = constraint, { ";" , constraint };
constraint = ( group | comparison );
group = "(", or, ")";
comparison = selector, comparison-op, arguments;
selector = unreserved;
O selector identifica um campo (ou atributo, elemento etc.) da entidade a ser filtrada. Pode ser qualquer string Unicode não vazia que não contenha caracteres reservados ou espaços.
Os operadores de comparação seguem a notação FIQL, com algumas alternativas:
- Igual a:
== - Diferente de:
!= - Menor que:
=lt=ou< - Menor ou igual a:
=le=ou<= - Maior que:
=gt=ou> - Maior ou igual a:
=ge=ou>= - Dentro da lista (IN):
=in= - Fora da lista (NOT IN):
=out=
Contribuições
Sinta-se à vontade para abrir issues ou enviar pull requests. O projeto ainda está em desenvolvimento e sua colaboração é bem-vinda!
Licença
Este projeto está licenciado sob a Licença Apache 2.0.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 342 | 4/30/2025 |