ydb 0.13.5

Crate contains generated low-level grpc code from YDB API protobuf, used as base for ydb crate
Documentation
use std::collections::HashMap;

use crate::errors::YdbResult;
use crate::grpc_wrapper::raw_query_service::stream::ExecuteQueryStream;
use crate::types::Value;

use super::exec::{
    client_begin_stream, transaction_begin_stream, CallOptions, ClientExecContext,
    TransactionExecContext,
};

pub(crate) enum ExecCoreRef<'a> {
    Client(&'a mut ClientExecContext),
    Transaction(&'a mut TransactionExecContext),
}

impl ExecCoreRef<'_> {
    pub(crate) async fn begin_stream(
        &mut self,
        text: String,
        params: HashMap<String, Value>,
        opts: CallOptions,
    ) -> YdbResult<ExecuteQueryStream> {
        match self {
            ExecCoreRef::Client(ctx) => client_begin_stream(ctx, text, params, opts).await,
            ExecCoreRef::Transaction(ctx) => {
                transaction_begin_stream(ctx, text, params, opts).await
            }
        }
    }
}

pub(crate) trait HasCore {
    fn core_mut(&mut self) -> ExecCoreRef<'_>;
}