enisn / AutoFilterer

AutoFilterer is a mini filtering framework library for dotnet. The main purpose of the library is to generate LINQ expressions for Entities over DTOs automatically. The first aim is to be compatible with Open API 3.0 Specifications
MIT License
462 stars 37 forks source link
aspnetcore aspnetcoremvc automatic-filtering automation csharp dotnet dtos filter filtering linq paginations query query-engine querystring range sorting swagger
![Logo](https://github.com/enisn/AutoFilterer/blob/master/art/auto_filterer_icon.png?raw=true) # AutoFilterer AutoFilterer is a mini filtering framework library for dotnet. The main purpose of the library is to generate LINQ expressions for Entities over DTOs automatically. Creating queries without writing any expression code is the most powerful feature that is provided. The first aim of AutoFilterer is to be compatible with Open API 3.0 Specifications, unlike oData & GraphQL. > This library **does not** generate database queries directly. It generates LINQ Expressions. You can check [Documentation](https://enisn-projects.io/docs/en/AutoFilterer/) for getting started. [![Nuget](https://img.shields.io/nuget/v/AutoFilterer?logo=nuget)](https://www.nuget.org/packages/AutoFilterer/) [![Docs](https://img.shields.io/badge/Visit-Docs-orange)](https://enisn-projects.io/docs/en/AutoFilterer/) [![CodeFactor](https://www.codefactor.io/repository/github/enisn/autofilterer/badge)](https://www.codefactor.io/repository/github/enisn/autofilterer) [![.NET Pipeline](https://github.com/enisn/AutoFilterer/actions/workflows/dotnetcore.yml/badge.svg)](https://github.com/enisn/AutoFilterer/actions/workflows/dotnetcore.yml) Gitmoji

Getting Started

Vsit visit documentation to learn how to use AutoFilterer.

↗️ Open in Visual Studio Code


Usage

A quick example is presented below. Reading documentation is highly recommended for detailed features.

public class ProductFilter : PaginationFilterBase
{
  public Range<double> Price { get; set; }

  [ToLowerContainsComparison]
  public string Name { get; set; }

  [StringFilteringOptions(StringFilterOption.Equals)]
  public string Locale { get; set; }
}
  public IActionResult GetProducts([FromQuery]ProductFilter filter)
  {
    var products = db.Products.ApplyFilter(filter).ToList();
    return Ok(products);
  }

Don't forget to visit Wiki for better understanding of usage.


AutoFilterer.Swagger

All parameters support OpenAPI 3.0 Specifications 👍

Improve your swagger documentation via using AutoFilterer.Swagger


AutoFilterer.Generators

AutoFilterer.Generators aims to generate filter objects from entities automatically via using dotnet source generators.

Visit documentation of Generators


Performance

See Benchmark Results from here


Sponsors


Stats

Alt