| 123456789101112131415161718192021222324252627282930313233 |
- 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, Logger logger)
- {
- var user = CredentialsCache.ValidateAndRefresh(session.ID)
- ?? throw new RpcException("User not found in Credentials Cache!", RpcError.UNAUTHENTICATED);
- var response = new RpcQueryResult();
- var tasks = parameters.Queries.ToArray(query => Task.Run(() =>
- {
- var table = new RpcQueryTable() { Key = query.Key };
- var store = DbFactory.FindStore(query.Type, user.ID, user.UserID, session.Platform, session.Version ?? "", logger);
- table.Table = store.Query(query.Filter, query.Columns, query.Sort, query.Range);
- return table;
- }));
- Task.WaitAll(tasks);
- response.Tables = tasks.ToArray(x => x.Result);
-
- return response;
- }
- public RpcQueryHandler(IRpcServer sender) : base(sender)
- {
- }
- }
|