dgraph_tonic/txn/
default.rs1use std::collections::HashMap;
2use std::fmt::Debug;
3use std::marker::PhantomData;
4
5use crate::client::ILazyClient;
6use crate::stub::Stub;
7use crate::txn::{IState, TxnState, TxnVariant};
8use crate::Request;
9
10#[derive(Clone, Debug)]
14pub struct Base<C: ILazyClient> {
15 mark: PhantomData<C>,
16}
17
18impl<C: ILazyClient> IState for Base<C> {
19 fn query_request<S: ILazyClient>(
23 &self,
24 state: &TxnState<S>,
25 query: String,
26 vars: HashMap<String, String>,
27 ) -> Request {
28 Request {
29 query,
30 vars,
31 start_ts: state.context.start_ts,
32 ..Default::default()
33 }
34 }
35}
36
37pub type TxnType<C> = TxnVariant<Base<C>, C>;
41
42impl<C: ILazyClient> TxnType<C> {
43 pub fn new(stub: Stub<C>) -> TxnType<C> {
47 Self {
48 state: Box::new(TxnState {
49 context: Default::default(),
50 stub,
51 }),
52 extra: Base {
53 mark: PhantomData {},
54 },
55 }
56 }
57}