3#ifndef CWIST_NET_GRAPHQL_H
4#define CWIST_NET_GRAPHQL_H
7#include <cjson/cJSON.h>
15#define CWIST_GRAPHQL_MAX_QUERY_SIZE (64U * 1024U)
16#define CWIST_GRAPHQL_MAX_FIELDS 128U
17#define CWIST_GRAPHQL_MAX_DEPTH 16U
26typedef cJSON *(*cwist_graphql_resolver_fn)(
const cJSON *args,
const cJSON *variables,
void *ctx);
58 size_t field_cap, cJSON **args_out);
bool cwist_graphql_add_mutation(cwist_graphql_schema_t *schema, const char *field, cwist_graphql_resolver_fn resolver, void *ctx)
Register a resolver for a GraphQL mutation field.
struct cwist_graphql_schema cwist_graphql_schema_t
cJSON *(* cwist_graphql_resolver_fn)(const cJSON *args, const cJSON *variables, void *ctx)
bool cwist_graphql_parse_subscription(const char *query, const cJSON *variables, char *field_out, size_t field_cap, cJSON **args_out)
Extract the root field name and parsed arguments of a subscription operation.
bool cwist_graphql_add_query(cwist_graphql_schema_t *schema, const char *field, cwist_graphql_resolver_fn resolver, void *ctx)
Register a resolver for a GraphQL query field.
void cwist_graphql_schema_destroy(cwist_graphql_schema_t *schema)
Destroy a schema and all registered query/mutation fields.
cwist_error_t cwist_graphql_execute(cwist_graphql_schema_t *schema, const char *request_json, cwist_sstring **out_json)
Execute a GraphQL query or mutation from a JSON request body.
cwist_graphql_schema_t * cwist_graphql_schema_create(void)
Allocate an empty GraphQL schema with no query or mutation fields.
void cwist_graphql_serve(cwist_graphql_schema_t *schema, cwist_http_request *req, cwist_http_response *res)
HTTP handler serving GraphQL requests over POST.
HTTP Protocol Definitions and Helpers.
Integrated error structure used throughout the system.
HTTP Response Object. Supports standard string body or Zero-Copy pointer body.