cido-macros 0.2.0

Macros for generating code that enables easier interfacing with cido
Documentation
mod cidomap;
mod events;
mod orderby;
mod transformer;
mod util;

pub use cidomap::{CidomapStruct, CidomapStructDef, GraphqlStructDef};
pub use events::{ErrorFlow, EventsEnum};
pub use orderby::{OrderBy, OrderByVariant};
use proc_macro2::Span;
pub use transformer::{
  CachePolicy, Conversion, DerivedField, StructType, TransformerField, TransformerStruct,
};
pub use util::{SqlSafeName, embed_generated_code};

pub mod deps {
  pub use deluxe;
  pub use heck;
  pub use proc_macro2;
  pub use quote;
  pub use syn;
}

pub(crate) fn err(span: &dyn syn::spanned::Spanned, t: impl core::fmt::Display) -> syn::Error {
  syn::Error::new(span.span(), t)
}

pub(crate) fn err_span(span: proc_macro2::Span, t: impl core::fmt::Display) -> syn::Error {
  syn::Error::new(span, t)
}

pub fn ensure_generics_zero(generics: &syn::Generics) -> deluxe::Result<()> {
  if generics.const_params().next().is_some()
    || generics.lifetimes().next().is_some()
    || generics.type_params().next().is_some()
  {
    return Err(deluxe::Error::new(
      Span::call_site(),
      "Unable to handle generics",
    ));
  }
  Ok(())
}