Example #1
0
    public async Task <IActionResult> Post([FromBody] OperationRequest request)
    {
        var stream = await _queryStreamService.QueryAsync(new Query
        {
            Document      = request.Query,
            Variables     = request.Variables,
            OperationName = request.OperationName
        }, Request.HttpContext.RequestAborted);

        var result = await stream.Reader.ReadAsync();

        return(Ok(result));
    }
    public async Task <ActionResult <ExecutionResult> > Get(OperationRequest operation)
    {
        var stream = await _query.QueryAsync(
            new Query
        {
            Document      = operation.Query,
            Variables     = operation.Variables,
            OperationName = operation.OperationName
        }, HttpContext.RequestAborted);

        var result = await stream.Reader.ReadAsync(HttpContext.RequestAborted);

        return(Ok(result));
    }
Example #3
0
        public ChannelReader <ExecutionResult> QueryAsync(
            QueryRequest query,
            CancellationToken cancellationToken)
        {
            var channel = Channel.CreateUnbounded <ExecutionResult>();
            var _       = Task.Run(async() =>
            {
                var result = await _queryStreamService.QueryAsync(new Query()
                {
                    Document      = Parser.ParseDocument(query.Query),
                    OperationName = query.OperationName,
                    Extensions    = query.Extensions,
                    Variables     = query.Variables
                }, cancellationToken);
                var __ = result.Reader.WriteTo(channel.Writer);
            }, CancellationToken.None);

            return(channel.Reader);
        }