pub struct SyncSubscription { /* private fields */ }Expand description
Use ditto.sync().register_subscription(...) to create a SyncSubscription
The subscription will remain active until either:
Implementations§
Source§impl SyncSubscription
impl SyncSubscription
Sourcepub fn query_string(&self) -> String
pub fn query_string(&self) -> String
The DQL query string of this SyncSubscription (as passed while
registering it).
This is the original query string supplied when calling
ditto.sync().register_subscription(...), not the resolved query with
arguments substituted in.
§Example
use dittolive_ditto::prelude::*;
let sync_subscription = ditto.sync().register_subscription("SELECT * FROM cars")?;
assert_eq!(sync_subscription.query_string(), "SELECT * FROM cars");Sourcepub fn query_arguments(&self) -> Option<Value>
pub fn query_arguments(&self) -> Option<Value>
The DQL query arguments of this SyncSubscription (as passed while
registering it).
The returned value is not guaranteed to be strictly equal to the value
provided when calling ditto.sync().register_subscription(...), as
the arguments will have gone through a serialization roundtrip. This
might affect equality checks, particularly for non-primitive values. If
you want more control over how to deserialize the query arguments then
use query_arguments_cbor_data or
query_arguments_json_str.
§Example
use dittolive_ditto::prelude::*;
let sync_subscription = ditto
.sync()
.register_subscription((
"SELECT * FROM cars WHERE color = :color",
serde_json::json!({
"color": "red",
})
))?;
let maybe_args = sync_subscription.query_arguments();
let args = maybe_args.expect("expected query arguments");
let args_json = serde_json::to_value(&args)?;
assert_eq!(args_json, serde_json::json!({
"color": "red",
}));
Sourcepub fn query_arguments_cbor_data(&self) -> Option<Vec<u8>>
pub fn query_arguments_cbor_data(&self) -> Option<Vec<u8>>
Returns the DQL query arguments as raw CBOR-encoded bytes.
§Example
use dittolive_ditto::prelude::*;
let sync_subscription = ditto
.sync()
.register_subscription((
"SELECT * FROM cars WHERE color = :color",
serde_json::json!({
"color": "red",
})
))?;
let maybe_args = sync_subscription.query_arguments_cbor_data();
let args = maybe_args.expect("expected query arguments");
let args_json: serde_json::Value = serde_cbor::from_slice(&args)?;
assert_eq!(args_json, serde_json::json!({
"color": "red",
}));
Sourcepub fn query_arguments_json_str(&self) -> Option<String>
pub fn query_arguments_json_str(&self) -> Option<String>
Returns the DQL query arguments as a JSON string.
§Example
use dittolive_ditto::prelude::*;
let args = serde_json::json!({
"color": "red",
});
let query = (
"SELECT * FROM cars WHERE color = :color",
args.clone(),
);
let sync_subscription = ditto.sync().register_subscription(query)?;
let maybe_args = sync_subscription.query_arguments_json_str();
let args_str = maybe_args.expect("expected query arguments");
assert_eq!(args_str, serde_json::to_string(&args).unwrap());
Sourcepub fn cancel(&self)
pub fn cancel(&self)
Cancels this SyncSubscription, so that changes matching the query are no longer
synced from other peers to this one.
§Example
use dittolive_ditto::Ditto;
let subscription = ditto.sync().register_subscription("SELECT * FROM cars")?;
assert!(!subscription.is_cancelled());
subscription.cancel();
assert!(subscription.is_cancelled());Sourcepub fn is_cancelled(&self) -> bool
pub fn is_cancelled(&self) -> bool
Returns true if this SyncSubscription has been cancelled, false otherwise.
§Example
use dittolive_ditto::Ditto;
let subscription = ditto.sync().register_subscription("SELECT * FROM cars")?;
assert!(!subscription.is_cancelled());
subscription.cancel();
assert!(subscription.is_cancelled());