示例#1
0
        private static string FormatQueryFilter(ClientQueryRequest request, ref DynamicParameters queryArgs)
        {
            var filter = string.Empty;

            if (request.Id != null)
            {
                queryArgs.Add("Id", request.Id);

                filter += filter.Length > 0
                    ? "AND Id = @Id "
                    : "WHERE Id = @Id ";
            }

            if (!string.IsNullOrWhiteSpace(request.Username))
            {
                queryArgs.Add("Username", request.Username);

                filter += filter.Length > 0
                    ? "AND Username = @Username "
                    : "WHERE Username = @Username";
            }

            if (request.Role.HasValue)
            {
                var role = (int)request.Role;

                queryArgs.Add("Role", role);

                filter += filter.Length > 0
                    ? "AND Role = @Role "
                    : "WHERE Role = @Role";
            }
            return(filter);
        }
    public static async Task <ClientQueryResult> PostAsync(
        this TestServer testServer,
        ClientQueryRequest request,
        string path = "/graphql",
        bool enableApolloTracing = false,
        bool includeQueryPlan    = false)
    {
        HttpResponseMessage response =
            await SendPostRequestAsync(
                testServer,
                JsonConvert.SerializeObject(request),
                path,
                enableApolloTracing,
                includeQueryPlan);

        if (response.StatusCode == HttpStatusCode.NotFound)
        {
            return(new ClientQueryResult {
                StatusCode = HttpStatusCode.NotFound
            });
        }

        var json = await response.Content.ReadAsStringAsync();

        ClientQueryResult result = JsonConvert.DeserializeObject <ClientQueryResult>(json);

        result.StatusCode  = response.StatusCode;
        result.ContentType = response.Content.Headers.ContentType !.ToString();
        return(result);
    }
示例#3
0
        public async Task <ClientViewModel> GetFilteredItemAsync(ClientQueryRequest request)
        {
            var queryArgs = new DynamicParameters();

            var query = $@"SELECT 
                            Id,
                            FirstName,
	                        LastName,
                            Cpf,
	                        Email,
	                        IsActive
                           FROM [Client]
                           {FormatQueryFilter(request, ref queryArgs)}
                           ORDER BY FirstName";

            return((await _sqlConnection.QueryAsync <ClientViewModel>(query, queryArgs)).FirstOrDefault());
        }
    public static async Task <IReadOnlyList <ClientQueryResult> > PostOperationAsync(
        this TestServer testServer,
        ClientQueryRequest request,
        string operationNames,
        string path = "/graphql",
        Func <string, string> createOperationParameter = null)
    {
        createOperationParameter ??= s => "batchOperations=[" + s + "]";
        HttpResponseMessage response =
            await SendPostRequestAsync(
                testServer,
                JsonConvert.SerializeObject(request),
                path + "?" + createOperationParameter(operationNames));

        if (response.StatusCode == HttpStatusCode.NotFound)
        {
            return(new[] { new ClientQueryResult {
                               StatusCode = HttpStatusCode.NotFound
                           } });
        }

        var json = await response.Content.ReadAsStringAsync();

        try
        {
            List <ClientQueryResult> result =
                JsonConvert.DeserializeObject <List <ClientQueryResult> >(json);

            foreach (ClientQueryResult item in result)
            {
                item.StatusCode  = response.StatusCode;
                item.ContentType = response.Content.Headers.ContentType.ToString();
            }

            return(result);
        }
        catch
        {
            ClientQueryResult result = JsonConvert.DeserializeObject <ClientQueryResult>(json);
            result.StatusCode  = response.StatusCode;
            result.ContentType = response.Content.Headers.ContentType.ToString();
            return(new[] { result });
        }
    }
    public static async Task <ClientRawResult> PostRawAsync(
        this TestServer testServer,
        ClientQueryRequest request,
        string path = "/graphql")
    {
        HttpResponseMessage response =
            await SendPostRequestAsync(
                testServer,
                JsonConvert.SerializeObject(request),
                path);

        if (response.StatusCode == HttpStatusCode.NotFound)
        {
            return(new ClientRawResult {
                StatusCode = HttpStatusCode.NotFound
            });
        }

        return(new ClientRawResult
        {
            StatusCode = response.StatusCode,
            ContentType = response.Content.Headers.ContentType !.ToString(),
            Content = await response.Content.ReadAsStringAsync()
        });