pub struct FunctionField {
pub name: String,
pub schema_name: String,
pub function_name: String,
pub returns: String,
pub returns_table: (String, String),
pub arguments: Vec<(String, String, bool)>,
pub session_argument: Option<String>,
pub volatile: bool,
pub description: Option<String>,
}Expand description
A database function returning rows of a table, exposed as a root field.
A function that returns SETOF <table> answers the same question a table
does, from a query somebody wrote in SQL rather than from the table
directly. It filters, orders and pages like the table it returns, and its
own arguments arrive under args so they cannot collide with those.
Where it appears follows from what PostgreSQL says it does: a function declared VOLATILE may write, so it is a mutation; one declared STABLE or IMMUTABLE may not, so it is a query. Nothing else is a safe place to draw that line – the alternative is trusting a name.
Fields§
§name: StringThe field’s name, which is the function’s.
schema_name: StringSchema the function lives in.
function_name: StringThe function’s own name, which the field is named after.
returns: StringThe GraphQL type of the rows it returns.
returns_table: (String, String)The table those rows belong to, as (schema, table).
arguments: Vec<(String, String, bool)>Its arguments, as (name, PostgreSQL type, required). The session
argument is not among them: the client does not supply it.
session_argument: Option<String>The name of its session argument, if it has one.
Hasura’s convention: a hasura_session json parameter is filled from
the caller’s session variables rather than taken from the request, so a
function can read who is asking. Exposing it as an argument would let
the caller name its own identity, which is the opposite of the point.
volatile: boolWhether it may write, and so belongs on the mutation root.
description: Option<String>Description from the function’s comment.
Trait Implementations§
Source§impl Clone for FunctionField
impl Clone for FunctionField
Source§fn clone(&self) -> FunctionField
fn clone(&self) -> FunctionField
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for FunctionField
impl RefUnwindSafe for FunctionField
impl Send for FunctionField
impl Sync for FunctionField
impl Unpin for FunctionField
impl UnsafeUnpin for FunctionField
impl UnwindSafe for FunctionField
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more