add AND / OR support when filtering
All checks were successful
Publish NuGets / build (release) Successful in 34s
All checks were successful
Publish NuGets / build (release) Successful in 34s
This commit is contained in:
parent
433b852a43
commit
89ccbe990f
@ -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(" {");
|
||||||
|
|||||||
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user