hugsqlx_derive/
lib.rs

1use hugsqlx_core::{Context, ContextType};
2use proc_macro::TokenStream;
3
4#[proc_macro_derive(HugSqlx, attributes(queries))]
5pub fn hugsqlx(input_stream: TokenStream) -> TokenStream {
6    let ast = syn::parse(input_stream).unwrap();
7    let ctx = Context::new(if cfg!(feature = "postgres") {
8        ContextType::Postgres
9    } else if cfg!(feature = "sqlite") {
10        ContextType::Sqlite
11    } else if cfg!(feature = "mysql") {
12        ContextType::Mysql
13    } else {
14        ContextType::Default
15    });
16    hugsqlx_core::impl_hug_sqlx(&ast, ctx).into()
17}