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 (const: unstable) · 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§fn eq(&self, other: &SubscriptionDefinition) -> bool
fn eq(&self, other: &SubscriptionDefinition) -> bool
self and other values to be equal, and is used by ==.