Skip to main content

hydracache_macros/
lib.rs

1use proc_macro::TokenStream;
2use syn::{parse_macro_input, DeriveInput};
3
4mod config;
5mod entity;
6mod paths;
7
8/// Derive `CacheEntity` metadata for database result-cache helpers.
9///
10/// # Example
11///
12/// ```rust,ignore
13/// use hydracache_db::{CacheEntity, HydraCacheEntity};
14///
15/// #[derive(HydraCacheEntity)]
16/// #[hydracache(entity = "user", collection = "users", id = i64)]
17/// struct User {
18///     id: i64,
19///     name: String,
20/// }
21///
22/// assert_eq!(User::cache_key_for(&42), "user:42");
23/// ```
24#[proc_macro_derive(HydraCacheEntity, attributes(hydracache))]
25pub fn derive_hydracache_entity(input: TokenStream) -> TokenStream {
26    entity::expand(parse_macro_input!(input as DeriveInput))
27        .unwrap_or_else(syn::Error::into_compile_error)
28        .into()
29}