reifydb_engine/
subscription.rs1use std::sync::Arc;
5
6use reifydb_core::interface::catalog::id::SubscriptionId;
7use reifydb_rql::flow::flow::FlowDag;
8use reifydb_transaction::transaction::Transaction;
9use reifydb_type::Result;
10
11pub trait SubscriptionService: Send + Sync {
17 fn next_id(&self) -> SubscriptionId;
19
20 fn register_subscription(
22 &self,
23 id: SubscriptionId,
24 flow_dag: FlowDag,
25 column_names: Vec<String>,
26 txn: &mut Transaction<'_>,
27 ) -> Result<()>;
28
29 fn unregister_subscription(&self, id: &SubscriptionId) -> Result<()>;
31}
32
33pub type SubscriptionServiceRef = Arc<dyn SubscriptionService>;