Expand description
Subscription runtime for event-driven GraphQL subscriptions.
FraiseQL subscriptions are compiled projections of database events, not traditional resolver-based subscriptions. Events originate from database transactions (via LISTEN/NOTIFY or CDC) and are delivered through transport adapters.
§Architecture
Database Transaction (INSERT/UPDATE/DELETE)
↓ (commits)
LISTEN/NOTIFY (PostgreSQL)
↓
SubscriptionManager (event routing)
↓
SubscriptionMatcher (filter evaluation)
↓ (parallel delivery)
├─ graphql-ws Adapter (WebSocket)
├─ Webhook Adapter (HTTP POST)
└─ Kafka Adapter (event streaming)§Example
// Illustrative — subscription infrastructure requires a live schema + transport.
// Use SubscriptionManager::new(Arc::new(schema)) for the full API.
// Create subscription manager
let manager = SubscriptionManager::new(Arc::new(schema));
// Subscribe to events (synchronous, not async)
let subscription_id = manager.subscribe(
"OrderCreated",
user_context_json,
variables_json,
"connection-id",
)?;
// Receive events via broadcast channel
let mut receiver = manager.receiver();
while let Ok(payload) = receiver.recv().await {
if payload.subscription_id == subscription_id {
// Deliver to client
}
}
// Unsubscribe (synchronous)
manager.unsubscribe(subscription_id)?;Modules§
- protocol
- GraphQL over
WebSocketsubscription protocol types.
Structs§
- Active
Subscription - A client’s active subscription.
- Delivery
Result - Result of delivering an event to multiple transports.
- Kafka
Adapter - Kafka transport adapter stub (without
kafkafeature). - Kafka
Config - Kafka transport adapter configuration.
- Kafka
Message - Kafka message format for event delivery.
- Subscription
Event - An event from the database that may trigger subscriptions.
- Subscription
Id - Unique identifier for a subscription instance.
- Subscription
Manager - Manages active subscriptions and event routing.
- Subscription
Payload - Delivery payload sent to transport adapters.
- Transport
Manager - Multi-transport delivery manager.
- Webhook
Adapter - Webhook transport adapter for HTTP POST delivery.
- Webhook
Payload - Webhook payload format for event delivery.
- Webhook
Transport Config - Webhook transport adapter configuration.
Enums§
- Subscription
Error - Errors that can occur during subscription operations.
- Subscription
Operation - Database operation that triggered the event.
Traits§
- Transport
Adapter - Transport adapter trait for delivering subscription events.
Functions§
- extract_
rls_ conditions - Extract
(field, value)equality conditions from an RLSWhereClause.
Type Aliases§
- BoxDyn
Transport Adapter - Type alias for boxed dynamic transport adapter.
- Webhook
Config - Backward-compatible type alias — use
WebhookTransportConfigin new code.