use proc_macro::TokenStream;
use queryweave_codegen::conventions::DefaultConventions;
#[proc_macro_derive(
Filters,
attributes(queryweave, filter, sortable, filters, equivalent_field)
)]
pub fn derive_filters(input: TokenStream) -> TokenStream {
queryweave_codegen::filters::<DefaultConventions>(input.into()).into()
}
#[cfg(feature = "merge-patch")]
#[proc_macro_derive(MergePatch, attributes(queryweave, merge_patch))]
pub fn derive_merge_patch(input: TokenStream) -> TokenStream {
queryweave_codegen::merge_patch::<DefaultConventions>(input.into()).into()
}
#[cfg(feature = "merge-patch")]
#[proc_macro_derive(MergePatchNullableFields, attributes(queryweave, merge_patch))]
pub fn derive_merge_patch_nullable_fields(input: TokenStream) -> TokenStream {
queryweave_codegen::merge_patch_nullable_fields::<DefaultConventions>(input.into()).into()
}
#[proc_macro_derive(RawValue, attributes(queryweave))]
pub fn derive_raw_value(input: TokenStream) -> TokenStream {
queryweave_codegen::raw_value::<DefaultConventions>(input.into()).into()
}
#[cfg(feature = "merge-patch")]
#[proc_macro_derive(
ValidateNonNullable,
attributes(queryweave, validate_non_nullable, equivalent_field)
)]
pub fn derive_validate_non_nullable(input: TokenStream) -> TokenStream {
queryweave_codegen::validate_non_nullable::<DefaultConventions>(input.into()).into()
}
#[proc_macro_derive(AppendToQuery, attributes(queryweave, append_to_query))]
pub fn derive_append_to_query(input: TokenStream) -> TokenStream {
queryweave_codegen::append_to_query::<DefaultConventions>(input.into()).into()
}
#[proc_macro_derive(AppendToQueryWithSeparator, attributes(queryweave, append_to_query))]
pub fn derive_append_to_query_with_separator(input: TokenStream) -> TokenStream {
queryweave_codegen::append_to_query_with_separator::<DefaultConventions>(input.into()).into()
}
#[proc_macro_derive(Columns, attributes(queryweave, columns, domain_field))]
pub fn derive_columns(input: TokenStream) -> TokenStream {
queryweave_codegen::columns::<DefaultConventions>(input.into()).into()
}