Skip to main content

reifydb_engine/procedure/
context.rs

1// SPDX-License-Identifier: AGPL-3.0-or-later
2// Copyright (c) 2025 ReifyDB
3
4use reifydb_catalog::catalog::Catalog;
5use reifydb_function::registry::Functions;
6use reifydb_runtime::clock::Clock;
7use reifydb_transaction::transaction::Transaction;
8use reifydb_type::{
9	params::Params,
10	value::{frame::frame::Frame, identity::IdentityId},
11};
12
13use crate::{Result, vm::executor::Executor};
14
15pub struct ProcedureContext<'a> {
16	pub identity: IdentityId,
17	pub params: &'a Params,
18	pub catalog: &'a Catalog,
19	pub functions: &'a Functions,
20	pub clock: &'a Clock,
21	pub executor: &'a Executor,
22}
23
24impl ProcedureContext<'_> {
25	/// Execute RQL within the current transaction.
26	pub fn rql(&self, tx: &mut Transaction<'_>, rql: &str, params: Params) -> Result<Vec<Frame>> {
27		self.executor.rql(tx, self.identity, rql, params)
28	}
29}