#[non_exhaustive]pub struct QueryField {Show 14 fields
pub name: String,
pub table_name: String,
pub schema_name: String,
pub type_name: String,
pub local_type_name: String,
pub return_type: String,
pub is_list: bool,
pub is_by_pk: bool,
pub pk_columns: Vec<(String, String)>,
pub description: Option<String>,
pub aggregate_name: Option<String>,
pub aggregate_description: Option<String>,
pub aggregates: bool,
pub rows: bool,
}Expand description
A query field for a table (e.g., users, userByPk).
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.name: StringField name (e.g., “users”)
table_name: StringTable name
schema_name: StringSchema the table lives in
type_name: StringGraphQL object type name (e.g., “Users”)
local_type_name: StringBase name for helper types owned by this table.
return_type: StringGraphQL return type
is_list: boolWhether this returns a list
is_by_pk: boolWhether this is a “by PK” query
pk_columns: Vec<(String, String)>Primary key columns, as (column name, PostgreSQL type).
Populated for by-PK queries so the resolver can filter on the table’s
actual key rather than assuming a column called id. Empty for list
queries.
description: Option<String>Field description
aggregate_name: Option<String>The name given to this table’s aggregate root, if one was.
The aggregate field is built beside the list field rather than being a
QueryField of its own, so the name it was given rides along with the
list field that spawns it.
aggregate_description: Option<String>The description given to that aggregate root, if one was. Some("")
means metadata said it has none.
aggregates: boolWhether the aggregate root is built at all.
The one thing a role’s view of the schema cache cannot say. Dropping a table or a column is a fact about the database as this role sees it; whether that role may count the rows it can already read is a fact about the permission, and Hasura keeps the two apart because counting rows you cannot see is a way of seeing them. True unless a select permission says otherwise, which is what leaves an unconfigured server exactly as it was.
rows: boolWhether the rows themselves can be asked for.
False for a table a role may count and not read: Hasura’s way of granting “how many” without granting “which” is a select permission naming no columns, and such a table has an aggregate root and no row type to hang a list root on. The field is still carried so that the aggregate root beside it is built.
Implementations§
Source§impl QueryField
impl QueryField
Sourcepub fn list(table: &Table) -> Self
pub fn list(table: &Table) -> Self
Create a list query field (e.g., users), named after the table.
Sourcepub fn list_named(table: &Table, base_name: &str) -> Self
pub fn list_named(table: &Table, base_name: &str) -> Self
Create a list query field using an explicit base name.
Sourcepub fn list_typed(
table: &Table,
root_base_name: &str,
type_name: &str,
local_type_name: &str,
) -> Self
pub fn list_typed( table: &Table, root_base_name: &str, type_name: &str, local_type_name: &str, ) -> Self
Create a list query field with separate root, row type and helper names.
Sourcepub fn by_pk(table: &Table) -> Option<Self>
pub fn by_pk(table: &Table) -> Option<Self>
Create a by-PK query field (e.g., userByPk), named after the table.
Sourcepub fn by_pk_named(table: &Table, base_name: &str) -> Option<Self>
pub fn by_pk_named(table: &Table, base_name: &str) -> Option<Self>
Create a by-PK query field using an explicit base name.
Trait Implementations§
Source§impl Clone for QueryField
impl Clone for QueryField
Auto Trait Implementations§
impl Freeze for QueryField
impl RefUnwindSafe for QueryField
impl Send for QueryField
impl Sync for QueryField
impl Unpin for QueryField
impl UnsafeUnpin for QueryField
impl UnwindSafe for QueryField
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