use std::sync::Arc;
use async_trait::async_trait;
use fraiseql_arrow::QueryExecutor;
use fraiseql_core::{runtime::Executor, security::SecurityContext};
pub struct ExecutorQueryAdapter {
executor: Arc<Executor>,
}
impl ExecutorQueryAdapter {
#[must_use]
pub const fn new(executor: Arc<Executor>) -> Self {
Self { executor }
}
}
#[async_trait]
impl QueryExecutor for ExecutorQueryAdapter {
async fn execute_with_security(
&self,
query: &str,
variables: Option<&serde_json::Value>,
security_context: &SecurityContext,
) -> Result<serde_json::Value, fraiseql_core::error::FraiseQLError> {
self.executor.execute_with_security(query, variables, security_context).await
}
}