Ir al contenido principal
Expression trees · traductores · analyzers

Vali-Flow

// una spec. muchos backends.

Construye reglas una vez. Ejecuta en EF Core, SQL, MongoDB, DynamoDB, Elasticsearch, Redis o InMemory.

CoreEF CoreSQLInMemoryMongoDBDynamoDBElasticsearchRedisCoreEF CoreSQLInMemoryMongoDBDynamoDBElasticsearchRedis
8paquetes
7stores
0 depsdeps core
$dotnet add package Vali-Flow

Specs que viajan con tus datos

Una sola spec se convierte en LINQ, SQL, NoSQL o checks in-memory.

01
🧠

Vali-Flow.Core

Builder fluido sin dependencias para expression trees, validacion y specs reutilizables.

02
🧩

Vali-Flow (EF Core)

Traduce specs a LINQ y ejecuta sobre DbSet<T> con evaluadores async.

03
🧪

Vali-Flow.InMemory

Evaluador in-memory rapido para tests, cache y reglas locales.

04
🗄

Vali-Flow.Sql

Genera SQL WHERE para Dapper y ADO.NET.

05
🍃

Vali-Flow.NoSql.MongoDB

Construye filtros de MongoDB directamente desde specs.

06

Vali-Flow.NoSql.DynamoDB

Traduce specs a expresiones de DynamoDB.

07
🔎

Vali-Flow.NoSql.Elasticsearch

Crea queries de Elasticsearch desde una sola spec.

08
🧰

Vali-Flow.NoSql.Redis

Genera filtros para Redis/RediSearch.

pipeline de specs

Construye → traduce → ejecuta

Core construye el arbol de expresiones. Los evaluadores lo traducen al store.

SpecValiFlow<T>
CoreExpression Tree
TranslatorEF / SQL / NoSQL
EvaluatorWhereAsync / IsValid
StoreEF Core · SQL · Mongo
ResultRows / Matches
🧠Vali-Flow.Core
new ValiFlow<Product>()
spec built
🧩Vali-Flow (EF Core)
WhereAsync(spec)
rows: 42
🗄Vali-Flow.Sql
ToSql(spec)
"WHERE price > @p0"
🧪Vali-Flow.InMemory
IsValid(entity)
valid
🍃Vali-Flow.NoSql.MongoDB
ToFilter(spec)
{ price: { $gt: 10 } }
Vali-Flow.NoSql.DynamoDB
ToExpression(spec)
price > :v0
🔎Vali-Flow.NoSql.Elasticsearch
ToQuery(spec)
{ range: { price: { gt: 10 }}}
🧰Vali-Flow.NoSql.Redis
ToRediSearch(spec)
@price:[10 +inf]
Program.cs
12345678
builder.Services.AddValiFlowEvaluator<Product, AppDbContext>();
// Construye una spec
var spec = new ValiFlow<Product>()
.EqualTo(p => p.IsActive, true)
.GreaterThan(p => p.Price, 10m);
var result = await evaluator.WhereAsync(spec);

8 paquetes NuGet. Instala solo lo que necesitas.

Empieza con Core, agrega un evaluador o combina varios stores.

Evaluador EF Core y paquete principal para stores relacionales.

dotnet add package Vali-Flow

Builder core para specs con expression trees y validacion.

dotnet add package Vali-Flow.Core

Evaluador in-memory para tests y filtrado local.

dotnet add package Vali-Flow.InMemory

Evaluador SQL para Dapper y ADO.NET.

dotnet add package Vali-Flow.Sql

Evaluador MongoDB con filtros nativos.

dotnet add package Vali-Flow.NoSql.MongoDB

Evaluador DynamoDB con traduccion de expresiones.

dotnet add package Vali-Flow.NoSql.DynamoDB

Evaluador Elasticsearch para query DSL.

dotnet add package Vali-Flow.NoSql.Elasticsearch

Evaluador Redis con generacion de queries RediSearch.

dotnet add package Vali-Flow.NoSql.Redis

Donde Vali-Flow encaja mejor

Compone reglas una vez y mantén el comportamiento consistente en tus capas.

REPOS

Filtros de repositorio

Construye specs en la capa de aplicación y ejecútalas en EF Core o SQL.

WhereAsync(spec)
MULTI-STORE

Consistencia multi-store

Usa la misma spec para MongoDB, DynamoDB, Elasticsearch y Redis.

ToFilter / ToQuery / ToSql
TESTS

Testing y validación

Ejecuta specs in-memory para validar reglas en tests rápidos.

IsValid(entity)