1#![cfg_attr(feature = "fail-on-warnings", deny(warnings))]
2#![cfg_attr(feature = "fail-on-warnings", deny(clippy::all))]
3#![forbid(unsafe_code)]
4
5mod entity;
6mod event;
7mod query;
8mod repo;
9mod retry_on_concurrent_modification;
10
11use proc_macro::TokenStream;
12use syn::parse_macro_input;
13
14#[proc_macro_derive(EsEvent, attributes(es_event))]
15pub fn es_event_derive(input: TokenStream) -> TokenStream {
16 let ast = parse_macro_input!(input as syn::DeriveInput);
17 match event::derive(ast) {
18 Ok(tokens) => tokens.into(),
19 Err(e) => e.write_errors().into(),
20 }
21}
22
23#[proc_macro_attribute]
24pub fn retry_on_concurrent_modification(args: TokenStream, input: TokenStream) -> TokenStream {
25 let ast = parse_macro_input!(input as syn::ItemFn);
26 match retry_on_concurrent_modification::make(args, ast) {
27 Ok(tokens) => tokens.into(),
28 Err(e) => e.write_errors().into(),
29 }
30}
31
32#[proc_macro_derive(EsEntity, attributes(es_entity))]
33pub fn es_entity_derive(input: TokenStream) -> TokenStream {
34 let ast = parse_macro_input!(input as syn::DeriveInput);
35 match entity::derive(ast) {
36 Ok(tokens) => tokens.into(),
37 Err(e) => e.write_errors().into(),
38 }
39}
40
41#[proc_macro_derive(EsRepo, attributes(es_repo))]
42pub fn es_repo_derive(input: TokenStream) -> TokenStream {
43 let ast = parse_macro_input!(input as syn::DeriveInput);
44 match repo::derive(ast) {
45 Ok(tokens) => tokens.into(),
46 Err(e) => e.write_errors().into(),
47 }
48}
49
50#[proc_macro]
51#[doc(hidden)]
52pub fn expand_es_query(input: TokenStream) -> TokenStream {
53 let input = parse_macro_input!(input as query::QueryInput);
54 match query::expand(input) {
55 Ok(tokens) => tokens.into(),
56 Err(e) => e.write_errors().into(),
57 }
58}