|
@@ -57,14 +57,18 @@ namespace InABox.Clients
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public static QueryMultipleResults QueryMultiple(params IKeyedQueryDef[] queries)
|
|
|
+ public static void QueryMultiple(
|
|
|
+ Action<Dictionary<string, CoreTable>?, Exception?> callback,
|
|
|
+ Dictionary<string, IQueryDef> queries)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
using var timer = new Profiler(false);
|
|
|
- var result = CheckClient().QueryMultiple(queries.ToDictionary(x => x.Key, x => x as IQueryDef));
|
|
|
- timer.Log(result.Sum(x => x.Value.Rows.Count));
|
|
|
- return new QueryMultipleResults(result);
|
|
|
+ CheckClient().QueryMultiple((result, e) =>
|
|
|
+ {
|
|
|
+ timer.Dispose(result != null ? result.Sum(x => x.Value.Rows.Count) : -1);
|
|
|
+ callback?.Invoke(result, e);
|
|
|
+ }, queries);
|
|
|
}
|
|
|
catch (RequestException e)
|
|
|
{
|
|
@@ -72,21 +76,38 @@ namespace InABox.Clients
|
|
|
throw;
|
|
|
}
|
|
|
}
|
|
|
- public static QueryMultipleResults QueryMultiple(IEnumerable<IKeyedQueryDef> queries)
|
|
|
- {
|
|
|
- try
|
|
|
+
|
|
|
+ public static QueryMultipleResults QueryMultiple(params IKeyedQueryDef[] queries) =>
|
|
|
+ new QueryMultipleResults(QueryMultiple(queries.ToDictionary(x => x.Key, x => x as IQueryDef)));
|
|
|
+
|
|
|
+ public static void QueryMultiple(Action<QueryMultipleResults?, Exception?> callback, params IKeyedQueryDef[] queries) =>
|
|
|
+ QueryMultiple((results, e) =>
|
|
|
{
|
|
|
- using var timer = new Profiler(false);
|
|
|
- var result = CheckClient().QueryMultiple(queries.ToDictionary(x => x.Key, x => x as IQueryDef));
|
|
|
- timer.Log(result.Sum(x => x.Value.Rows.Count));
|
|
|
- return new QueryMultipleResults(result);
|
|
|
- }
|
|
|
- catch (RequestException e)
|
|
|
+ if (results != null)
|
|
|
+ {
|
|
|
+ callback?.Invoke(new QueryMultipleResults(results), e);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ callback?.Invoke(null, e);
|
|
|
+ }
|
|
|
+ }, queries.ToDictionary(x => x.Key, x => x as IQueryDef));
|
|
|
+
|
|
|
+ public static QueryMultipleResults QueryMultiple(IEnumerable<IKeyedQueryDef> queries) =>
|
|
|
+ new QueryMultipleResults(QueryMultiple(queries.ToDictionary(x => x.Key, x => x as IQueryDef)));
|
|
|
+
|
|
|
+ public static void QueryMultiple(Action<QueryMultipleResults?, Exception?> callback, IEnumerable<IKeyedQueryDef> queries) =>
|
|
|
+ QueryMultiple((results, e) =>
|
|
|
{
|
|
|
- ClientFactory.RaiseRequestError(e);
|
|
|
- throw;
|
|
|
- }
|
|
|
- }
|
|
|
+ if(results != null)
|
|
|
+ {
|
|
|
+ callback?.Invoke(new QueryMultipleResults(results), e);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ callback?.Invoke(null, e);
|
|
|
+ }
|
|
|
+ }, queries.ToDictionary(x => x.Key, x => x as IQueryDef));
|
|
|
|
|
|
public static IValidationData Validate(Guid session)
|
|
|
{
|