| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 | 
							- using InABox.API;
 
- using InABox.Core;
 
- using InABox.Database;
 
- namespace InABox.Rpc
 
- {
 
-     
 
-     public class RpcQueryHandler : RpcCommandHandler<IRpcServer, RpcQueryCommand, RpcQueryParameters, RpcQueryResult> 
 
-     {
 
-         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 response = new RpcQueryResult();
 
-             var tasks = new List<Task<RpcQueryTable>>();
 
-             foreach (var query in parameters.Queries)
 
-             {
 
-                 var task = Task.Run(() =>
 
-                 {
 
-                     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
 
-                             )
 
-                         );                       
 
-                     }
 
-                     
 
-                 return table;
 
-                 });
 
-                 tasks.Add(task);
 
-             }
 
-             Task.WaitAll(tasks.ToArray());
 
-             response.Tables = tasks.Select(x => x.Result).ToArray();
 
-             
 
-             return response;
 
-         }
 
-         public RpcQueryHandler(IRpcServer sender) : base(sender)
 
-         {
 
-         }
 
-     }
 
- }
 
 
  |