dgraph_tonic/txn/
read_only.rs1use std::collections::HashMap;
2use std::fmt::Debug;
3
4use crate::client::ILazyClient;
5use crate::txn::default::Base;
6use crate::txn::{IState, TxnState, TxnType, TxnVariant};
7use crate::Request;
8
9#[derive(Clone, Debug)]
13pub struct ReadOnly<C: ILazyClient> {
14 base: Base<C>,
15}
16
17impl<C: ILazyClient> IState for ReadOnly<C> {
18 fn query_request<S: ILazyClient>(
22 &self,
23 state: &TxnState<S>,
24 query: String,
25 vars: HashMap<String, String>,
26 ) -> Request {
27 let mut request = self.base.query_request(state, query, vars);
28 request.read_only = true;
29 request
30 }
31}
32
33pub type TxnReadOnlyType<C> = TxnVariant<ReadOnly<C>, C>;
37
38impl<C: ILazyClient> TxnType<C> {
39 pub fn read_only(self) -> TxnReadOnlyType<C> {
43 TxnVariant {
44 state: self.state,
45 extra: ReadOnly { base: self.extra },
46 }
47 }
48}