pub struct Client { /* private fields */ }Expand description
EdgeDB Client
Internally it contains a connection pool.
To create client, use create_client function.
Implementations§
Source§impl Client
impl Client
Sourcepub fn query<R, A>(&self, query: &str, arguments: &A) -> Result<Vec<R>, Error>where
A: QueryArgs,
R: QueryResult,
pub fn query<R, A>(&self, query: &str, arguments: &A) -> Result<Vec<R>, Error>where
A: QueryArgs,
R: QueryResult,
Execute a query and return a collection of results.
You will usually have to specify the return type for the query:
let greeting = pool.query::<String, _>("SELECT 'hello'", &());
// or
let greeting: Vec<String> = pool.query("SELECT 'hello'", &());This method can be used with both static arguments, like a tuple of
scalars, and with dynamic arguments edgedb_protocol::value::Value.
Similarly, dynamically typed results are also supported.
Sourcepub fn query_single<R, A>(
&self,
query: &str,
arguments: &A,
) -> Result<Option<R>, Error>where
A: QueryArgs,
R: QueryResult,
pub fn query_single<R, A>(
&self,
query: &str,
arguments: &A,
) -> Result<Option<R>, Error>where
A: QueryArgs,
R: QueryResult,
Execute a query and return a single result
You will usually have to specify the return type for the query:
let greeting = pool.query_single::<String, _>("SELECT 'hello'", &());
// or
let greeting: Option<String> = pool.query_single(
"SELECT 'hello'",
&()
);This method can be used with both static arguments, like a tuple of
scalars, and with dynamic arguments edgedb_protocol::value::Value.
Similarly, dynamically typed results are also supported.
Sourcepub fn query_required_single<R, A>(
&self,
query: &str,
arguments: &A,
) -> Result<R, Error>where
A: QueryArgs,
R: QueryResult,
pub fn query_required_single<R, A>(
&self,
query: &str,
arguments: &A,
) -> Result<R, Error>where
A: QueryArgs,
R: QueryResult,
Execute a query and return a single result
The query must return exactly one element. If the query returns more
than one element, a
ResultCardinalityMismatchError
is raised. If the query returns an empty set, a
NoDataError is raised.
You will usually have to specify the return type for the query:
let greeting = pool.query_required_single::<String, _>(
"SELECT 'hello'",
&(),
);
// or
let greeting: String = pool.query_required_single(
"SELECT 'hello'",
&(),
);This method can be used with both static arguments, like a tuple of
scalars, and with dynamic arguments edgedb_protocol::value::Value.
Similarly, dynamically typed results are also supported.
Sourcepub fn query_json(
&self,
query: &str,
arguments: &impl QueryArgs,
) -> Result<Json, Error>
pub fn query_json( &self, query: &str, arguments: &impl QueryArgs, ) -> Result<Json, Error>
Execute a query and return the result as JSON.
Sourcepub fn query_single_json(
&self,
query: &str,
arguments: &impl QueryArgs,
) -> Result<Option<Json>, Error>
pub fn query_single_json( &self, query: &str, arguments: &impl QueryArgs, ) -> Result<Option<Json>, Error>
Execute a query and return a single result as JSON.
The query must return exactly one element. If the query returns more
than one element, a
ResultCardinalityMismatchError
is raised.
Sourcepub fn query_required_single_json(
&self,
query: &str,
arguments: &impl QueryArgs,
) -> Result<Json, Error>
pub fn query_required_single_json( &self, query: &str, arguments: &impl QueryArgs, ) -> Result<Json, Error>
Execute a query and return a single result as JSON.
The query must return exactly one element. If the query returns more
than one element, a
ResultCardinalityMismatchError
is raised. If the query returns an empty set, a
NoDataError is raised.
Sourcepub fn transaction<T, F>(&self, body: F) -> Result<T, Error>
pub fn transaction<T, F>(&self, body: F) -> Result<T, Error>
Execute a transaction
Transaction body must be encompassed in the closure. The closure may be executed multiple times. This includes not only database queries but also executing the whole function, so the transaction code must be prepared to be idempotent.
§Example
let conn = edgedb_sdk::client::create_client();
let val = conn.transaction(|mut tx| {
// TODO(tailhook) query_required_single
tx.query_required_single::<i64, _>("
WITH C := UPDATE Counter SET { value := .value + 1}
SELECT C.value LIMIT 1
", &()
)
})?;