in src/DurableTask.AzureStorage/Tracking/OrchestrationInstanceStatusQueryCondition.cs [112:163]
string? GetODataFilter()
{
var conditions = new List<string>();
if (this.CreatedTimeFrom > DateTime.MinValue)
{
conditions.Add($"{nameof(OrchestrationInstanceStatus.CreatedTime)} ge datetime'{this.CreatedTimeFrom:O}'");
}
if (this.CreatedTimeTo != default(DateTime) && this.CreatedTimeTo < DateTime.MaxValue)
{
conditions.Add($"{nameof(OrchestrationInstanceStatus.CreatedTime)} le datetime'{this.CreatedTimeTo:O}'");
}
if (this.RuntimeStatus != null && this.RuntimeStatus.Any())
{
conditions.Add($"{string.Join(" or ", this.RuntimeStatus.Select(x => $"{nameof(OrchestrationInstanceStatus.RuntimeStatus)} eq '{x:G}'"))}");
}
if (this.TaskHubNames != null && this.TaskHubNames.Any())
{
conditions.Add($"{string.Join(" or ", this.TaskHubNames.Select(x => $"TaskHubName eq '{x}'"))}");
}
if (!string.IsNullOrEmpty(this.InstanceIdPrefix))
{
string sanitizedPrefix = KeySanitation.EscapePartitionKey(this.InstanceIdPrefix);
int length = sanitizedPrefix.Length - 1;
char incrementedLastChar = (char)(sanitizedPrefix[length] + 1);
string greaterThanPrefix = sanitizedPrefix.Substring(0, length) + incrementedLastChar;
conditions.Add($"{nameof(OrchestrationInstanceStatus.PartitionKey)} ge '{sanitizedPrefix}'");
conditions.Add($"{nameof(OrchestrationInstanceStatus.PartitionKey)} lt '{greaterThanPrefix}'");
}
else if (this.ExcludeEntities)
{
conditions.Add($"{nameof(OrchestrationInstanceStatus.PartitionKey)} lt '@' or {nameof(OrchestrationInstanceStatus.PartitionKey)} ge 'A'");
}
if (this.InstanceId != null)
{
string sanitizedInstanceId = KeySanitation.EscapePartitionKey(this.InstanceId);
conditions.Add($"{nameof(OrchestrationInstanceStatus.PartitionKey)} eq '{sanitizedInstanceId}'");
}
return conditions.Count switch
{
0 => null,
1 => conditions[0],
_ => string.Join(" and ", conditions.Select(c => $"({c})")),
};
}