use quote::quote;
pub fn derive(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
let input: syn::DeriveInput = syn::parse_macro_input!(tokens);
let ident = input.ident;
quote!{
impl ::microrm::schema::datum::DatumProxy for #ident {}
impl ::microrm::schema::datum::ConcreteDatum for #ident {}
impl ::microrm::schema::datum::Datum for #ident {
fn sql_type() -> &'static str {
<::microrm::Serialized< #ident > as ::microrm::schema::datum::Datum>::sql_type()
}
fn bind_to(&self, stmt: &mut ::microrm::db::StatementContext, index: i32) {
self.clone().into_serialized().bind_to(stmt, index)
}
fn build_from(rdata: ::microrm::schema::relation::RelationData, stmt: &mut ::microrm::db::StatementRow, index: &mut i32) -> ::microrm::DBResult<Self>
where
Self: Sized,
{
<::microrm::Serialized< #ident > as ::microrm::schema::datum::Datum>::build_from(rdata, stmt, index).map(::microrm::Serialized::wrapped)
}
}
}.into()
}