gluesql_derive_proc/
lib.rs1use proc_macro::TokenStream;
2
3use crate::from_row::try_derive_from_row;
4use crate::to_row::try_derive_to_row;
5use syn::{parse_macro_input, DeriveInput};
6
7mod field;
8mod from_row;
9mod reflect_row;
10mod to_row;
11
12#[proc_macro_derive(ReflectGlueSqlRow, attributes(gluesql))]
13pub fn derive_reflect_row(input: TokenStream) -> TokenStream {
14 let derive_input = parse_macro_input!(input as DeriveInput);
15 reflect_row::try_derive_reflect_row(&derive_input)
16 .unwrap_or_else(|err| err.write_errors().into())
17 .into()
18}
19
20#[proc_macro_derive(FromGlueSqlRow, attributes(gluesql))]
21pub fn derive_from_row(input: TokenStream) -> TokenStream {
22 let derive_input = parse_macro_input!(input as DeriveInput);
23 try_derive_from_row(&derive_input).unwrap_or_else(|err| err.write_errors().into())
24}
25
26#[proc_macro_derive(ToGlueSqlRow, attributes(gluesql))]
27pub fn derive_to_from_row(input: TokenStream) -> TokenStream {
28 let derive_input = parse_macro_input!(input as DeriveInput);
29 try_derive_to_row(&derive_input).unwrap_or_else(|err| err.write_errors().into())
30}