Skip to main content

Client

Struct Client 

Source
pub struct Client { /* private fields */ }
Expand description

Async HTTP client for running queries against a Helix instance.

A thin async wrapper over reqwest that knows how to reach a Helix gateway’s query routes. Construct it with Client::new, optionally attach a bearer API key via Client::with_api_key, then build and send requests through Client::query.

The client is cheap to Clone — the underlying reqwest::Client shares its connection pool — so a single instance can be reused across tasks.

Reachable as helix_db::Client.

§Examples

use helix_db::Client;

// Defaults to http://localhost:6969 when the URL is `None`.
let local = Client::new(None)?;

// Or point at a remote cluster and attach an API key.
let remote = Client::new(Some("https://cluster.helix-db.com"))?
    .with_api_key(Some("hx_your_api_key"));

Implementations§

Source§

impl Client

Source

pub async fn graph( &self, selection: &GraphSelection, ) -> Result<Graph, GraphLoadError>

Execute one ordinary read batch and construct an immutable native graph.

All methods on the returned graph operate locally and perform no additional Helix reads.

Source§

impl Client

Source

pub fn new(url: Option<&str>) -> Result<Self, HelixError>

Create a client pointed at a Helix instance.

url is the instance base URL; when None, it defaults to http://localhost:6969. The /v2/query base route is resolved up front and reused by every request.

§Errors

Returns HelixError::InvalidURL if url (or the resolved query route) cannot be parsed.

Source

pub fn server(url: Option<&str>) -> Result<Self, HelixError>

Create a server-mode client pointed at a Helix instance.

Source

pub fn with_api_key(self, api_key: Option<&str>) -> Self

Attach (or clear) the bearer API key sent with every request.

Passing Some(key) sets an Authorization: Bearer <key> header on each request; passing None clears any previously set key.

Source

pub fn query<R: for<'de> Deserialize<'de>>( &self, request: QueryRequest, ) -> QueryExecutionRequest<'_, 'static, R>

Execute an SDK-built query request.

In server mode this posts to /v2/query. In embedded mode this executes directly against the in-process [HelixDB].

Source

pub fn query_raw( &self, request: QueryRequest, ) -> QueryExecutionRequest<'_, 'static, Vec<u8>>

Execute a query while retaining the response as raw bytes.

Graph loading uses this path so Rust validates and constructs the graph without an intermediate language-level object graph.

Source

pub fn request_builder<R: for<'de> Deserialize<'de>>( &self, ) -> QueryBuilder<'_, '_, R>

Start building an advanced server request.

R is the type the JSON response body is deserialized into by QueryExecutionRequest::send. Returns a QueryBuilder on which you can toggle request headers, then attach a request with QueryBuilder::query.

§Examples
#![recursion_limit = "256"]
use helix_db::Client;
use helix_db::dsl::prelude::*;
use serde::Deserialize;

#[derive(Deserialize)]
struct Users { count: u64 }

let response: Users = client.query(request).send().await?;
Source

pub async fn close(&self) -> Result<(), HelixError>

Flush and close an embedded database handle.

Server clients do not own database state, so closing them is a no-op.

Trait Implementations§

Source§

impl Clone for Client

Source§

fn clone(&self) -> Client

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Client

Source§

fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more