public virtual Task <T> ExecuteQuery <T>(ICosmosDbQuery <T> query)
        {
            var inMemoryStore = _serviceProvider.GetRequiredService <InMemoryDocumentStore>();

            var handlerType = typeof(ICosmosDbQueryHandler <,>).MakeGenericType(query.GetType(), typeof(T));
            var handler     = _serviceProvider.GetRequiredService(handlerType);

            // TODO We could make this waaay more efficient
            var result = (T)handlerType.GetMethod("Execute").Invoke(handler, new object[] { inMemoryStore, query });

            return(Task.FromResult(result));
        }
        public virtual async Task <T> ExecuteQuery <T>(ICosmosDbQuery <T> query)
        {
            await _storedProcedureDeployHelper.EnsureStoredProceduresAreDeployed();

            var client        = _serviceProvider.GetRequiredService <DocumentClient>();
            var configuration = _serviceProvider.GetRequiredService <Configuration>();

            var handlerType = typeof(ICosmosDbQueryHandler <,>).MakeGenericType(query.GetType(), typeof(T));
            var handler     = _serviceProvider.GetRequiredService(handlerType);

            // TODO We could make this waaay more efficient
            var result = await(Task <T>) handlerType.GetMethod("Execute").Invoke(handler, new object[] { client, configuration, query });

            return(result);
        }