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 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.
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 fn is_deprecated(&self) -> bool
pub 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 more