Skip to main content

reifydb_sub_server/
binding.rs

1// SPDX-License-Identifier: Apache-2.0
2// Copyright (c) 2026 ReifyDB
3
4#[cfg(not(reifydb_single_threaded))]
5use std::fmt::Write;
6
7#[cfg(not(reifydb_single_threaded))]
8use reifydb_core::{actors::server::Operation, metric::ExecutionMetrics};
9#[cfg(not(reifydb_single_threaded))]
10use reifydb_value::{
11	params::Params,
12	value::{frame::frame::Frame, identity::IdentityId},
13};
14
15#[cfg(not(reifydb_single_threaded))]
16use crate::{
17	dispatch::dispatch,
18	execute::ExecuteError,
19	interceptor::{RequestContext, RequestMetadata},
20	state::AppState,
21};
22
23#[cfg(not(reifydb_single_threaded))]
24pub async fn dispatch_binding(
25	state: &AppState,
26	namespace_path: &str,
27	procedure_name: &str,
28	params: Params,
29	identity: IdentityId,
30	metadata: RequestMetadata,
31) -> Result<(Vec<Frame>, ExecutionMetrics), ExecuteError> {
32	let mut call_text = String::with_capacity(8 + namespace_path.len() + procedure_name.len());
33	write!(&mut call_text, "CALL {}::{}()", namespace_path, procedure_name).unwrap();
34
35	let ctx = RequestContext {
36		identity,
37		operation: Operation::Command,
38		rql: call_text,
39		params,
40		metadata,
41	};
42
43	dispatch(state, ctx).await
44}