DotnetLeague.SimpleRsqlParse 1.0.0

dotnet add package DotnetLeague.SimpleRsqlParse --version 1.0.0
                    
NuGet\Install-Package DotnetLeague.SimpleRsqlParse -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="DotnetLeague.SimpleRsqlParse" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="DotnetLeague.SimpleRsqlParse" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="DotnetLeague.SimpleRsqlParse" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add DotnetLeague.SimpleRsqlParse --version 1.0.0
                    
#r "nuget: DotnetLeague.SimpleRsqlParse, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package DotnetLeague.SimpleRsqlParse@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=DotnetLeague.SimpleRsqlParse&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=DotnetLeague.SimpleRsqlParse&version=1.0.0
                    
Install as a Cake Tool

Simple Rsql Parse

NuGet

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 WHERE para 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: ; ou and
  • OR lógico: , ou or

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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • 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