---
source: crates/gelx/tests/codegen.rs
expression: "&content"
---
pub mod example {
use ::gelx::exports as __g;
/// Execute the desired query.
pub async fn query(
client: &__g::gel_tokio::Client,
props: &Input,
) -> ::core::result::Result<Output, __g::gel_errors::Error> {
client.query_required_single(QUERY, props).await
}
/// Compose the query as part of a larger transaction.
pub async fn transaction(
conn: &mut __g::gel_tokio::Transaction,
props: &Input,
) -> ::core::result::Result<Output, __g::gel_errors::Error> {
conn.query_required_single(QUERY, props).await
}
#[derive(::std::fmt::Debug, ::core::clone::Clone)]
pub struct Input {
pub position: i32,
}
impl __g::gel_protocol::query_arg::QueryArgs for Input {
fn encode(
&self,
encoder: &mut __g::gel_protocol::query_arg::Encoder,
) -> core::result::Result<(), __g::gel_errors::Error> {
let map = __g::gel_protocol::named_args! {
"position" => self.position.clone(),
};
map.encode(encoder)
}
}
#[derive(::std::fmt::Debug, ::core::clone::Clone)]
pub struct Output {
pub id: __g::uuid::Uuid,
pub position: i32,
}
/// The original query string provided to the macro. Can be reused in your codebase.
pub const QUERY: &str = "select (insert Simple { position := <default::Position>$position }) {**};";
}