pub enum QueryParameters {
Json(String),
Arrow(Bytes),
}Expand description
Query parameters for gRPC queries.
Parameters can be encoded as JSON or Arrow IPC format. JSON is simpler but Arrow is more efficient for large parameter sets.
Variants§
Json(String)
JSON-encoded parameters.
Arrow(Bytes)
Arrow IPC-encoded parameters. Stored as Bytes so the parameter
payload can be handed to prost without a copy.
Implementations§
Source§impl QueryParameters
impl QueryParameters
Sourcepub fn from_json_string(json: impl Into<String>) -> Self
pub fn from_json_string(json: impl Into<String>) -> Self
Creates JSON parameters from a JSON string.
§Example
use hyperdb_api_core::client::grpc::QueryParameters;
// For positional parameters ($1, $2 or ?)
let params = QueryParameters::from_json_string("[42, \"hello\"]");
// For named parameters (:id, :name)
let params = QueryParameters::from_json_string(r#"{"id": 42, "name": "hello"}"#);Sourcepub fn from_json_value<T: Serialize>(value: &T) -> Result<Self, Error>
pub fn from_json_value<T: Serialize>(value: &T) -> Result<Self, Error>
Creates JSON parameters from a serializable value.
§Example
use hyperdb_api_core::client::grpc::QueryParameters;
let params = QueryParameters::from_json_value(&vec![42, 100, 200])?;§Errors
Returns a serde_json::Error if value cannot be serialized
to JSON (for example, a type with a failing Serialize impl).
Sourcepub fn json_positional<T: Serialize + ?Sized>(
values: &[&T],
) -> Result<Self, Error>
pub fn json_positional<T: Serialize + ?Sized>( values: &[&T], ) -> Result<Self, Error>
Creates JSON parameters for positional placeholders ($1, $2 or ?).
Values are serialized as a JSON array. All values must be the same type.
For mixed types, use from_json_value with serde_json::json!.
§Example
use hyperdb_api_core::client::grpc::QueryParameters;
// Same-type parameters
let params = QueryParameters::json_positional(&[&42i64, &100i64])?;
// Mixed types: use from_json_value with serde_json::json!
let params = QueryParameters::from_json_value(&serde_json::json!([42, "hello", true]))?;§Errors
Returns a serde_json::Error if any element of values fails
to serialize to JSON.
Sourcepub fn json_named() -> JsonNamedParamsBuilder
pub fn json_named() -> JsonNamedParamsBuilder
Creates a builder for named JSON parameters (:name style).
§Example
use hyperdb_api_core::client::grpc::QueryParameters;
let params = QueryParameters::json_named()
.add("id", &42i64)?
.add("name", &"Alice")?
.add("active", &true)?
.build();Sourcepub fn from_arrow(data: impl Into<Bytes>) -> Self
pub fn from_arrow(data: impl Into<Bytes>) -> Self
Creates Arrow IPC parameters from raw bytes.
The bytes should contain an Arrow IPC stream with schema and a single record batch containing the parameter values.
§Example
use hyperdb_api_core::client::grpc::QueryParameters;
use arrow::array::{Int64Array, StringArray};
use arrow::datatypes::{DataType, Field, Schema};
use arrow::record_batch::RecordBatch;
use arrow::ipc::writer::StreamWriter;
use std::sync::Arc;
// Create Arrow arrays for parameters
let id_array = Int64Array::from(vec![42]);
let name_array = StringArray::from(vec!["Alice"]);
// Create schema and record batch
let schema = Arc::new(Schema::new(vec![
Field::new("id", DataType::Int64, false),
Field::new("name", DataType::Utf8, false),
]));
let batch = RecordBatch::try_new(schema.clone(), vec![
Arc::new(id_array),
Arc::new(name_array),
])?;
// Serialize to IPC
let mut buf = Vec::new();
let mut writer = StreamWriter::try_new(&mut buf, &batch.schema())?;
writer.write(&batch)?;
writer.finish()?;
let params = QueryParameters::from_arrow(buf);Trait Implementations§
Source§impl Clone for QueryParameters
impl Clone for QueryParameters
Source§fn clone(&self) -> QueryParameters
fn clone(&self) -> QueryParameters
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl !Freeze for QueryParameters
impl RefUnwindSafe for QueryParameters
impl Send for QueryParameters
impl Sync for QueryParameters
impl Unpin for QueryParameters
impl UnsafeUnpin for QueryParameters
impl UnwindSafe for QueryParameters
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request