mochi/query
Types
Argument definition for schema generation
pub type ArgDef {
ArgDef(
name: String,
arg_type: schema.FieldType,
description: option.Option(String),
default_value: option.Option(dynamic.Dynamic),
)
}
Constructors
-
ArgDef( name: String, arg_type: schema.FieldType, description: option.Option(String), default_value: option.Option(dynamic.Dynamic), )
pub type Guard =
fn(schema.ExecutionContext) -> Result(Nil, String)
pub type MutationKind {
MutationKind
}
Constructors
-
MutationKind
pub type MutationOp(result) =
Op(MutationKind, result)
Unified operation type for queries, mutations, subscriptions, and fields.
The kind parameter encodes what kind of operation this is at the type level.
Use the type aliases QueryOp, MutationOp, SubscriptionOp, FieldOp in annotations.
pub opaque type Op(kind, result)
pub opaque type SchemaBuilder
pub type SubscriptionKind {
SubscriptionKind
}
Constructors
-
SubscriptionKind
pub type SubscriptionOp(event) =
Op(SubscriptionKind, event)
Values
pub fn add_enum(
builder: SchemaBuilder,
e: schema.EnumType,
) -> SchemaBuilder
pub fn add_enums(
builder: SchemaBuilder,
enums: List(schema.EnumType),
) -> SchemaBuilder
pub fn add_input(
builder: SchemaBuilder,
i: schema.InputObjectType,
) -> SchemaBuilder
pub fn add_inputs(
builder: SchemaBuilder,
inputs: List(schema.InputObjectType),
) -> SchemaBuilder
pub fn add_interface(
builder: SchemaBuilder,
i: schema.InterfaceType,
) -> SchemaBuilder
pub fn add_interfaces(
builder: SchemaBuilder,
interfaces: List(schema.InterfaceType),
) -> SchemaBuilder
pub fn add_mutation(
builder: SchemaBuilder,
m: Op(MutationKind, r),
) -> SchemaBuilder
pub fn add_mutations(
builder: SchemaBuilder,
mutations: List(Op(MutationKind, r)),
) -> SchemaBuilder
pub fn add_queries(
builder: SchemaBuilder,
queries: List(Op(QueryKind, r)),
) -> SchemaBuilder
pub fn add_query(
builder: SchemaBuilder,
q: Op(QueryKind, r),
) -> SchemaBuilder
pub fn add_scalar(
builder: SchemaBuilder,
s: schema.ScalarType,
) -> SchemaBuilder
pub fn add_scalars(
builder: SchemaBuilder,
scalars: List(schema.ScalarType),
) -> SchemaBuilder
pub fn add_subscription(
builder: SchemaBuilder,
s: Op(SubscriptionKind, e),
) -> SchemaBuilder
pub fn add_subscriptions(
builder: SchemaBuilder,
subscriptions: List(Op(SubscriptionKind, e)),
) -> SchemaBuilder
pub fn add_type(
builder: SchemaBuilder,
t: schema.ObjectType,
) -> SchemaBuilder
pub fn add_types(
builder: SchemaBuilder,
types: List(schema.ObjectType),
) -> SchemaBuilder
pub fn add_union(
builder: SchemaBuilder,
u: schema.UnionType,
) -> SchemaBuilder
pub fn add_unions(
builder: SchemaBuilder,
unions: List(schema.UnionType),
) -> SchemaBuilder
pub fn all_of(
guard_fns: List(
fn(schema.ExecutionContext) -> Result(Nil, String),
),
) -> fn(schema.ExecutionContext) -> Result(Nil, String)
Combine guards with AND logic — all must pass (checked in list order).
pub fn any_of(
guard_fns: List(
fn(schema.ExecutionContext) -> Result(Nil, String),
),
) -> fn(schema.ExecutionContext) -> Result(Nil, String)
Combine guards with OR logic — at least one must pass. Fails with the last error if all fail.
pub fn arg(name: String, arg_type: schema.FieldType) -> ArgDef
Create an argument definition
pub fn arg_with_default(
name: String,
arg_type: schema.FieldType,
default: dynamic.Dynamic,
) -> ArgDef
Create an argument with a default value
pub fn arg_with_default_desc(
name: String,
arg_type: schema.FieldType,
default: dynamic.Dynamic,
description: String,
) -> ArgDef
Create an argument with default value and description
pub fn arg_with_desc(
name: String,
arg_type: schema.FieldType,
description: String,
) -> ArgDef
Create an argument with description
pub fn build(builder: SchemaBuilder) -> schema.Schema
pub fn decode_input(
args: args.Args,
key: String,
decoder: decode.Decoder(a),
) -> Result(a, error.GraphQLError)
pub fn field(
name name: String,
returns return_type: schema.FieldType,
decode parent_decoder: fn(dynamic.Dynamic) -> Result(
parent,
String,
),
resolve resolver: fn(parent, schema.ExecutionContext) -> Result(
result,
error.GraphQLError,
),
) -> Op(FieldKind(parent), result)
Define a field on a type with no extra arguments.
pub fn field_with_args(
name name: String,
args arg_defs: List(ArgDef),
returns return_type: schema.FieldType,
decode parent_decoder: fn(dynamic.Dynamic) -> Result(
parent,
String,
),
resolve resolver: fn(parent, args.Args, schema.ExecutionContext) -> Result(
result,
error.GraphQLError,
),
) -> Op(FieldKind(parent), result)
Define a field on a type with arguments.
pub fn get_bool(
args: args.Args,
key: String,
) -> Result(Bool, error.GraphQLError)
pub fn get_bool_or(
args: args.Args,
key: String,
default: Bool,
) -> Bool
pub fn get_description(op: Op(k, r)) -> option.Option(String)
pub fn get_dynamic(
args: args.Args,
key: String,
) -> Result(dynamic.Dynamic, error.GraphQLError)
pub fn get_float(
args: args.Args,
key: String,
) -> Result(Float, error.GraphQLError)
pub fn get_float_or(
args: args.Args,
key: String,
default: Float,
) -> Float
pub fn get_id(
args: args.Args,
key: String,
) -> Result(String, error.GraphQLError)
pub fn get_int(
args: args.Args,
key: String,
) -> Result(Int, error.GraphQLError)
pub fn get_int_list(
args: args.Args,
key: String,
) -> Result(List(Int), error.GraphQLError)
pub fn get_int_or(
args: args.Args,
key: String,
default: Int,
) -> Int
pub fn get_optional_bool(
args: args.Args,
key: String,
) -> option.Option(Bool)
pub fn get_optional_dynamic(
args: args.Args,
key: String,
) -> option.Option(dynamic.Dynamic)
pub fn get_optional_float(
args: args.Args,
key: String,
) -> option.Option(Float)
pub fn get_optional_id(
args: args.Args,
key: String,
) -> option.Option(String)
pub fn get_optional_int(
args: args.Args,
key: String,
) -> option.Option(Int)
pub fn get_optional_string(
args: args.Args,
key: String,
) -> option.Option(String)
pub fn get_string(
args: args.Args,
key: String,
) -> Result(String, error.GraphQLError)
pub fn get_string_list(
args: args.Args,
key: String,
) -> Result(List(String), error.GraphQLError)
pub fn get_string_or(
args: args.Args,
key: String,
default: String,
) -> String
pub fn merge(a: SchemaBuilder, b: SchemaBuilder) -> SchemaBuilder
pub fn mutation(
name name: String,
returns return_type: schema.FieldType,
resolve resolver: fn(schema.ExecutionContext) -> Result(
result,
error.GraphQLError,
),
) -> Op(MutationKind, result)
pub fn mutation_with_args(
name name: String,
args arg_defs: List(ArgDef),
returns return_type: schema.FieldType,
resolve resolver: fn(args.Args, schema.ExecutionContext) -> Result(
result,
error.GraphQLError,
),
) -> Op(MutationKind, result)
pub fn new() -> SchemaBuilder
pub fn query(
name name: String,
returns return_type: schema.FieldType,
resolve resolver: fn(schema.ExecutionContext) -> Result(
result,
error.GraphQLError,
),
) -> Op(QueryKind, result)
Define a query with no arguments.
pub fn query_with_args(
name name: String,
args arg_defs: List(ArgDef),
returns return_type: schema.FieldType,
resolve resolver: fn(args.Args, schema.ExecutionContext) -> Result(
result,
error.GraphQLError,
),
) -> Op(QueryKind, result)
Define a query with arguments.
pub fn subscription(
name name: String,
returns return_type: schema.FieldType,
topic topic: String,
) -> Op(SubscriptionKind, event)
Define a subscription with a static topic string.
pub fn subscription_with_args(
name name: String,
args arg_defs: List(ArgDef),
returns return_type: schema.FieldType,
topic topic_resolver: fn(args.Args, schema.ExecutionContext) -> Result(
String,
error.GraphQLError,
),
) -> Op(SubscriptionKind, event)
Define a subscription with arguments and a dynamic topic resolver.
pub fn to_field_def(op: Op(k, r)) -> schema.FieldDefinition
Convert any Op to a schema FieldDefinition.
pub fn with_cache(builder: SchemaBuilder) -> SchemaBuilder
pub fn with_common_scalars(
builder: SchemaBuilder,
) -> SchemaBuilder
Register all built-in custom scalars (DateTime, Date, UUID, Email, URL, JSON).
pub fn with_description(op: Op(k, r), desc: String) -> Op(k, r)
Set the description. Works on any operation type.
pub fn with_encoder(
op: Op(k, r),
encoder: fn(r) -> dynamic.Dynamic,
) -> Op(k, r)
Override the result encoder. Works on any operation type.
pub fn with_guard(
op: Op(k, r),
guard_fn: fn(schema.ExecutionContext) -> Result(Nil, String),
) -> Op(k, r)
Add a guard. Works on any operation type. Guards run in the order added.