|
@@ -2,57 +2,54 @@ using InABox.API;
|
|
|
using InABox.Core;
|
|
|
using InABox.Database;
|
|
|
|
|
|
-namespace InABox.Rpc
|
|
|
+namespace InABox.Rpc;
|
|
|
+
|
|
|
+public class RpcQueryHandler : RpcCommandHandler<IRpcServer, RpcQueryCommand, RpcQueryParameters, RpcQueryResult>
|
|
|
{
|
|
|
-
|
|
|
- public class RpcQueryHandler : RpcCommandHandler<IRpcServer, RpcQueryCommand, RpcQueryParameters, RpcQueryResult>
|
|
|
+ protected override RpcQueryResult Execute(IRpcSession session, RpcQueryParameters parameters)
|
|
|
{
|
|
|
- protected override RpcQueryResult Execute(IRpcSession session, RpcQueryParameters parameters)
|
|
|
- {
|
|
|
- var user = CredentialsCache.ValidateAndRefresh(session.ID)
|
|
|
- ?? throw new RpcException("User not found in Credentials Cache!", RpcError.UNAUTHENTICATED);
|
|
|
+ var user = CredentialsCache.ValidateAndRefresh(session.ID)
|
|
|
+ ?? throw new RpcException("User not found in Credentials Cache!", RpcError.UNAUTHENTICATED);
|
|
|
|
|
|
- var response = new RpcQueryResult();
|
|
|
+ var response = new RpcQueryResult();
|
|
|
|
|
|
- var tasks = new List<Task<RpcQueryTable>>();
|
|
|
- foreach (var query in parameters.Queries)
|
|
|
+ var tasks = new List<Task<RpcQueryTable>>();
|
|
|
+ foreach (var query in parameters.Queries)
|
|
|
+ {
|
|
|
+ var task = Task.Run(() =>
|
|
|
{
|
|
|
- var task = Task.Run(() =>
|
|
|
+ var table = new RpcQueryTable() { Key = query.Key };
|
|
|
+ try
|
|
|
{
|
|
|
- var table = new RpcQueryTable() { Key = query.Key };
|
|
|
- try
|
|
|
- {
|
|
|
- var store = DbFactory.FindStore(query.Type, user.ID, user.UserID, session.Platform, session.Version ?? "");
|
|
|
- table.Table = store.Query(query.Filter, query.Columns, query.Sort);
|
|
|
- }
|
|
|
- catch (Exception e)
|
|
|
- {
|
|
|
- Logger.Send(
|
|
|
- LogType.Error,
|
|
|
- user.UserID,
|
|
|
- string.Format(
|
|
|
- "[{0} {1}] Error: {2}\n{3}",
|
|
|
- PlatformUtils.PlatformToString(session.Platform),
|
|
|
- session.Version,
|
|
|
- e.Message,
|
|
|
- e.StackTrace
|
|
|
- )
|
|
|
- );
|
|
|
- }
|
|
|
-
|
|
|
+ var store = DbFactory.FindStore(query.Type, user.ID, user.UserID, session.Platform, session.Version ?? "");
|
|
|
+ table.Table = store.Query(query.Filter, query.Columns, query.Sort);
|
|
|
+ }
|
|
|
+ catch (Exception e)
|
|
|
+ {
|
|
|
+ Logger.Send(
|
|
|
+ LogType.Error,
|
|
|
+ user.UserID,
|
|
|
+ string.Format(
|
|
|
+ "[{0} {1}] Error: {2}\n{3}",
|
|
|
+ PlatformUtils.PlatformToString(session.Platform),
|
|
|
+ session.Version,
|
|
|
+ e.Message,
|
|
|
+ e.StackTrace
|
|
|
+ )
|
|
|
+ );
|
|
|
+ }
|
|
|
return table;
|
|
|
- });
|
|
|
- tasks.Add(task);
|
|
|
- }
|
|
|
- Task.WaitAll(tasks.ToArray());
|
|
|
-
|
|
|
- response.Tables = tasks.Select(x => x.Result).ToArray();
|
|
|
-
|
|
|
- return response;
|
|
|
+ });
|
|
|
+ tasks.Add(task);
|
|
|
}
|
|
|
+ Task.WaitAll(tasks.ToArray());
|
|
|
|
|
|
- public RpcQueryHandler(IRpcServer sender) : base(sender)
|
|
|
- {
|
|
|
- }
|
|
|
+ response.Tables = tasks.Select(x => x.Result).ToArray();
|
|
|
+
|
|
|
+ return response;
|
|
|
+ }
|
|
|
+
|
|
|
+ public RpcQueryHandler(IRpcServer sender) : base(sender)
|
|
|
+ {
|
|
|
}
|
|
|
}
|