pub struct IntermediateType {
pub name: String,
pub fields: Vec<IntermediateField>,
pub description: Option<String>,
pub sql_source: Option<String>,
pub implements: Vec<String>,
pub requires_role: Option<String>,
pub is_error: bool,
pub relay: bool,
pub subscribable_tables: Option<Vec<String>>,
pub subscribable_pre_image: bool,
}Expand description
Type definition in intermediate format
Fields§
§name: StringType name (e.g., “User”)
fields: Vec<IntermediateField>Type fields
description: Option<String>Type description (from docstring)
sql_source: Option<String>Type-level SQL source (backing table/view), e.g. v_organization.
Owned types bind their relation on the query that returns them, so this
is normally absent. It is emitted by the authoring SDK only for an
owner-split extend type … @key federation entity: a subgraph that does
not own the entity exposes no root query returning it, so the federation
_entities resolver has no query to source the backing relation from and
would otherwise guess lower(typename) and resolve to null (#507). When
present it flows through to TypeDefinition.sql_source and is used as the
_entities fallback relation.
implements: Vec<String>Interfaces this type implements (GraphQL spec §3.6)
requires_role: Option<String>Role required to see this type in introspection and access queries returning it.
is_error: boolWhether this type is a mutation error type (tagged with @fraiseql.error).
relay: boolWhether this type implements the Relay Node interface.
When true, the compiler generates global node IDs (base64("TypeName:uuid"))
and validates that pk_{entity} (BIGINT) is present in the view’s data JSONB.
subscribable_tables: Option<Vec<String>>@subscribable(tables=[...]) — the underlying base table(s) whose external
writes should be captured onto the Change Spine (#366).
The compiler aggregates the set of (name, tables) for every type carrying
this into CompiledSchema.subscribable, which the
generate_capture_trigger_ddl generator turns into per-table capture
triggers. None/absent (the default) when the type is not subscribable.
§Example
{
"name": "Post",
"fields": [],
"subscribable_tables": ["tb_post"]
}subscribable_pre_image: bool@subscribable(..., pre_image=True) — whether the capture triggers on this
type’s tables also record the changed entity’s pre-image (OLD) into
object_data_before, the out-of-band parity for a mutation’s
changelog_pre_image. Only meaningful alongside subscribable_tables;
false/absent (the default) captures the after-image only.
Trait Implementations§
Source§impl Clone for IntermediateType
impl Clone for IntermediateType
Source§fn clone(&self) -> IntermediateType
fn clone(&self) -> IntermediateType
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for IntermediateType
impl Debug for IntermediateType
Source§impl Default for IntermediateType
impl Default for IntermediateType
Source§fn default() -> IntermediateType
fn default() -> IntermediateType
Source§impl<'de> Deserialize<'de> for IntermediateType
impl<'de> Deserialize<'de> for IntermediateType
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for IntermediateType
Source§impl PartialEq for IntermediateType
impl PartialEq for IntermediateType
Source§fn eq(&self, other: &IntermediateType) -> bool
fn eq(&self, other: &IntermediateType) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for IntermediateType
impl Serialize for IntermediateType
impl StructuralPartialEq for IntermediateType
Auto Trait Implementations§
impl Freeze for IntermediateType
impl RefUnwindSafe for IntermediateType
impl Send for IntermediateType
impl Sync for IntermediateType
impl Unpin for IntermediateType
impl UnsafeUnpin for IntermediateType
impl UnwindSafe for IntermediateType
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<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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