scyllax_macros_core/queries/
mod.rs1use proc_macro2::TokenStream;
2use quote::quote;
3use syn::ItemStruct;
4
5pub mod read;
6pub mod upsert;
7pub mod write;
8
9pub fn impl_generic_query(
11 input: &ItemStruct,
12 query: String,
13 inner_entity_type: Option<&syn::Type>,
14) -> TokenStream {
15 let struct_ident = &input.ident;
16
17 let query = if let Some(inner_entity_type) = inner_entity_type {
18 quote!(#query.replace("*", &#inner_entity_type::keys().join(", ")))
19 } else {
20 quote!(#query.to_string())
21 };
22
23 quote! {
24 #[scyllax::prelude::async_trait]
25 impl scyllax::prelude::Query for #struct_ident {
26 fn query() -> String {
27 #query
28 }
29 }
30 }
31}