firebase_rs_sdk/data_connect/
mutation.rs1use std::sync::Arc;
2use std::time::SystemTime;
3
4use crate::data_connect::error::DataConnectResult;
5use crate::data_connect::reference::{DataSource, MutationRef, MutationResult};
6use crate::data_connect::transport::DataConnectTransport;
7
8#[derive(Clone)]
9pub struct MutationManager {
10 transport: Arc<dyn DataConnectTransport>,
11}
12
13impl MutationManager {
14 pub fn new(transport: Arc<dyn DataConnectTransport>) -> Self {
15 Self { transport }
16 }
17
18 pub async fn execute_mutation(
19 &self,
20 mutation_ref: MutationRef,
21 ) -> DataConnectResult<MutationResult> {
22 let data = self
23 .transport
24 .invoke_mutation(mutation_ref.operation_name(), mutation_ref.variables())
25 .await?;
26 Ok(MutationResult {
27 data,
28 source: DataSource::Server,
29 fetch_time: SystemTime::now(),
30 mutation_ref,
31 })
32 }
33}