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 es_event_context;
7mod event;
8mod query;
9mod repo;
10mod retry_on_concurrent_modification;
11
12use proc_macro::TokenStream;
13use syn::parse_macro_input;
14
15#[proc_macro_derive(EsEvent, attributes(es_event))]
16pub fn es_event_derive(input: TokenStream) -> TokenStream {
17 let ast = parse_macro_input!(input as syn::DeriveInput);
18 match event::derive(ast) {
19 Ok(tokens) => tokens.into(),
20 Err(e) => e.write_errors().into(),
21 }
22}
23
24#[proc_macro_attribute]
25pub fn retry_on_concurrent_modification(args: TokenStream, input: TokenStream) -> TokenStream {
26 let ast = parse_macro_input!(input as syn::ItemFn);
27 match retry_on_concurrent_modification::make(args, ast) {
28 Ok(tokens) => tokens.into(),
29 Err(e) => e.write_errors().into(),
30 }
31}
32
33#[proc_macro_attribute]
34pub fn es_event_context(args: TokenStream, input: TokenStream) -> TokenStream {
35 let ast = parse_macro_input!(input as syn::ItemFn);
36 match es_event_context::make(args, ast) {
37 Ok(tokens) => tokens.into(),
38 Err(e) => e.write_errors().into(),
39 }
40}
41
42#[proc_macro_derive(EsEntity, attributes(es_entity))]
43pub fn es_entity_derive(input: TokenStream) -> TokenStream {
44 let ast = parse_macro_input!(input as syn::DeriveInput);
45 match entity::derive(ast) {
46 Ok(tokens) => tokens.into(),
47 Err(e) => e.write_errors().into(),
48 }
49}
50
51#[proc_macro_derive(EsRepo, attributes(es_repo))]
52pub fn es_repo_derive(input: TokenStream) -> TokenStream {
53 let ast = parse_macro_input!(input as syn::DeriveInput);
54 match repo::derive(ast) {
55 Ok(tokens) => tokens.into(),
56 Err(e) => e.write_errors().into(),
57 }
58}
59
60#[proc_macro]
61#[doc(hidden)]
62pub fn expand_es_query(input: TokenStream) -> TokenStream {
63 let input = parse_macro_input!(input as query::QueryInput);
64 match query::expand(input) {
65 Ok(tokens) => tokens.into(),
66 Err(e) => e.write_errors().into(),
67 }
68}