pub struct SubscriptionDefinition {
pub name: String,
pub return_type: String,
pub arguments: Vec<ArgumentDefinition>,
pub description: Option<String>,
pub topic: Option<String>,
pub filter: Option<SubscriptionFilter>,
pub fields: Vec<String>,
pub filter_fields: Vec<String>,
pub deprecation: Option<DeprecationInfo>,
}Expand description
A subscription definition.
Subscriptions are declarative bindings to event topics.
Fields§
§name: StringSubscription name.
return_type: StringReturn type name.
arguments: Vec<ArgumentDefinition>Arguments.
description: Option<String>Description.
topic: Option<String>Event topic to subscribe to.
filter: Option<SubscriptionFilter>Compiled filter expression for event matching.
Maps argument names to JSONB paths in event data.
Example: {"orderId": "$.id", "status": "$.order_status"}
fields: Vec<String>Fields to project from event data. If empty, all fields are returned.
filter_fields: Vec<String>Shorthand: argument names that should auto-generate argument_paths
entries using /<field_name> as the JSON pointer path.
Example: filter_fields: ["user_id"] generates an argument_paths
entry of "user_id" -> "/user_id" at runtime.
deprecation: Option<DeprecationInfo>Deprecation information (from @deprecated directive). When set, this subscription is marked as deprecated in the schema.
Implementations§
Source§impl SubscriptionDefinition
impl SubscriptionDefinition
Sourcepub fn new(name: impl Into<String>, return_type: impl Into<String>) -> Self
pub fn new(name: impl Into<String>, return_type: impl Into<String>) -> Self
Create a new subscription definition.
Sourcepub fn with_topic(self, topic: impl Into<String>) -> Self
pub fn with_topic(self, topic: impl Into<String>) -> Self
Set the event topic for this subscription.
§Example
use fraiseql_core::schema::SubscriptionDefinition;
let subscription = SubscriptionDefinition::new("orderCreated", "Order")
.with_topic("order_created");
assert_eq!(subscription.topic, Some("order_created".to_string()));Sourcepub fn with_description(self, description: impl Into<String>) -> Self
pub fn with_description(self, description: impl Into<String>) -> Self
Set the description for this subscription.
Sourcepub fn with_argument(self, arg: ArgumentDefinition) -> Self
pub fn with_argument(self, arg: ArgumentDefinition) -> Self
Add an argument to this subscription.
Sourcepub fn with_filter(self, filter: SubscriptionFilter) -> Self
pub fn with_filter(self, filter: SubscriptionFilter) -> Self
Set the filter configuration for event matching.
Sourcepub fn with_fields(self, fields: Vec<String>) -> Self
pub fn with_fields(self, fields: Vec<String>) -> Self
Set the fields to project from event data.
Sourcepub fn with_field(self, field: impl Into<String>) -> Self
pub fn with_field(self, field: impl Into<String>) -> Self
Add a field to project from event data.
Sourcepub fn deprecated(self, reason: Option<String>) -> Self
pub fn deprecated(self, reason: Option<String>) -> Self
Mark this subscription as deprecated.
§Example
use fraiseql_core::schema::SubscriptionDefinition;
let subscription = SubscriptionDefinition::new("oldUserEvents", "User")
.deprecated(Some("Use 'userEvents' instead".to_string()));
assert!(subscription.is_deprecated());Sourcepub const fn is_deprecated(&self) -> bool
pub const fn is_deprecated(&self) -> bool
Check if this subscription is deprecated.
Sourcepub fn deprecation_reason(&self) -> Option<&str>
pub fn deprecation_reason(&self) -> Option<&str>
Get the deprecation reason if deprecated.
Trait Implementations§
Source§impl Clone for SubscriptionDefinition
impl Clone for SubscriptionDefinition
Source§fn clone(&self) -> SubscriptionDefinition
fn clone(&self) -> SubscriptionDefinition
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SubscriptionDefinition
impl Debug for SubscriptionDefinition
Source§impl<'de> Deserialize<'de> for SubscriptionDefinition
impl<'de> Deserialize<'de> for SubscriptionDefinition
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>,
Source§impl PartialEq for SubscriptionDefinition
impl PartialEq for SubscriptionDefinition
Source§impl Serialize for SubscriptionDefinition
impl Serialize for SubscriptionDefinition
impl StructuralPartialEq for SubscriptionDefinition
Auto Trait Implementations§
impl Freeze for SubscriptionDefinition
impl RefUnwindSafe for SubscriptionDefinition
impl Send for SubscriptionDefinition
impl Sync for SubscriptionDefinition
impl Unpin for SubscriptionDefinition
impl UnsafeUnpin for SubscriptionDefinition
impl UnwindSafe for SubscriptionDefinition
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,
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