fn main() { pub mod example { use ::edgedb_codegen::exports as e; /// Execute the desired query. #[cfg(feature = "query")] pub async fn query( client: &e::edgedb_tokio::Client, props: &Input, ) -> core::result::Result { client.query_required_single(QUERY, props).await } /// Compose the query as part of a larger transaction. #[cfg(feature = "query")] pub async fn transaction( conn: &mut e::edgedb_tokio::Transaction, props: &Input, ) -> core::result::Result { conn.query_required_single(QUERY, props).await } #[derive(Clone, Debug)] #[cfg_attr(feature = "builder", derive(e::typed_builder::TypedBuilder))] #[cfg_attr(feature = "query", derive(e::edgedb_derive::Queryable))] #[cfg_attr( feature = "serde", derive(e::serde::Serialize, e::serde::Deserialize) )] pub struct Input { #[cfg_attr(feature = "builder", builder(setter(into)))] pub name: String, #[cfg_attr(feature = "builder", builder(setter(into)))] pub bio: String, #[cfg_attr(feature = "builder", builder(setter(into)))] pub slug: String, } impl e::edgedb_protocol::query_arg::QueryArgs for Input { fn encode( &self, encoder: &mut e::edgedb_protocol::query_arg::Encoder, ) -> core::result::Result<(), e::edgedb_errors::Error> { let map = e::edgedb_protocol::named_args! { "name" => self.name.clone(), "bio" => self.bio.clone(), "slug" => self.slug.clone(), }; map.encode(encoder) } } #[derive(Clone, Debug)] #[cfg_attr(feature = "query", derive(e::edgedb_derive::Queryable))] #[cfg_attr( feature = "serde", derive(e::serde::Serialize, e::serde::Deserialize) )] pub struct Output { pub id: e::uuid::Uuid, pub name: Option, pub bio: Option, pub slug: String, } /// The original query string provided to the macro. Can be reused in your codebase. pub const QUERY: &str = "with NewUser := (insert User {\n name := $name,\n bio := $bio,\n slug := $slug,\n})\nselect NewUser {\n id,\n name,\n bio,\n slug,\n};\n"; } }