add AND / OR support when filtering
All checks were successful
Publish NuGets / build (release) Successful in 34s

This commit is contained in:
David Nguyen 2026-02-02 17:53:43 -05:00
parent 433b852a43
commit 89ccbe990f
Signed by: david.nguyen
GPG Key ID: D5FB5A5715829326
2 changed files with 54 additions and 2 deletions

View File

@ -2864,7 +2864,8 @@ namespace Svrnty.CQRS.Grpc.Generators
sb.AppendLine(" {"); sb.AppendLine(" {");
sb.AppendLine(" Path = protoFilter.Path,"); sb.AppendLine(" Path = protoFilter.Path,");
sb.AppendLine(" Type = ((PoweredSoft.DynamicQuery.Core.FilterType)protoFilter.Type).ToString(),"); sb.AppendLine(" Type = ((PoweredSoft.DynamicQuery.Core.FilterType)protoFilter.Type).ToString(),");
sb.AppendLine(" Value = protoFilter.Value"); sb.AppendLine(" Value = protoFilter.Value,");
sb.AppendLine(" And = true");
sb.AppendLine(" };"); sb.AppendLine(" };");
sb.AppendLine(); sb.AppendLine();
sb.AppendLine(" // Handle nested AND filters"); sb.AppendLine(" // Handle nested AND filters");
@ -2894,7 +2895,8 @@ namespace Svrnty.CQRS.Grpc.Generators
sb.AppendLine(" {"); sb.AppendLine(" {");
sb.AppendLine(" Path = pf.Path,"); sb.AppendLine(" Path = pf.Path,");
sb.AppendLine(" Type = ((PoweredSoft.DynamicQuery.Core.FilterType)pf.Type).ToString(),"); sb.AppendLine(" Type = ((PoweredSoft.DynamicQuery.Core.FilterType)pf.Type).ToString(),");
sb.AppendLine(" Value = pf.Value"); sb.AppendLine(" Value = pf.Value,");
sb.AppendLine(" And = true");
sb.AppendLine(" };"); sb.AppendLine(" };");
sb.AppendLine(" if (pf.And != null && pf.And.Count > 0)"); sb.AppendLine(" if (pf.And != null && pf.And.Count > 0)");
sb.AppendLine(" {"); sb.AppendLine(" {");

View File

@ -21,6 +21,13 @@ service QueryService {
} }
// DynamicQuery service for CQRS operations
service DynamicQueryService {
// Dynamic query for User
rpc QueryUsers (DynamicQueryUsersRequest) returns (DynamicQueryUsersResponse);
}
// Request message for AddUserCommand // Request message for AddUserCommand
message AddUserCommandRequest { message AddUserCommandRequest {
string name = 1; string name = 1;
@ -59,3 +66,46 @@ message User {
string email = 3; string email = 3;
} }
// Dynamic query filter with AND/OR support
message DynamicQueryFilter {
string path = 1;
int32 type = 2; // PoweredSoft.DynamicQuery.Core.FilterType
string value = 3;
repeated DynamicQueryFilter and = 4;
repeated DynamicQueryFilter or = 5;
}
// Dynamic query sort
message DynamicQuerySort {
string path = 1;
bool ascending = 2;
}
// Dynamic query group
message DynamicQueryGroup {
string path = 1;
}
// Dynamic query aggregate
message DynamicQueryAggregate {
string path = 1;
int32 type = 2; // PoweredSoft.DynamicQuery.Core.AggregateType
}
// Dynamic query request for User
message DynamicQueryUsersRequest {
int32 page = 1;
int32 page_size = 2;
repeated DynamicQueryFilter filters = 3;
repeated DynamicQuerySort sorts = 4;
repeated DynamicQueryGroup groups = 5;
repeated DynamicQueryAggregate aggregates = 6;
}
// Dynamic query response for User
message DynamicQueryUsersResponse {
repeated User data = 1;
int64 total_records = 2;
int32 number_of_pages = 3;
}