pulse_schema_derive/
lib.rs1use proc_macro::TokenStream;
2use syn::{parse_macro_input, DeriveInput};
3
4mod emit;
5
6#[proc_macro_attribute]
8pub fn pulse_type(_args: TokenStream, input: TokenStream) -> TokenStream {
9 let input = parse_macro_input!(input as DeriveInput);
10
11 emit::write_psl_type(&input);
14
15 TokenStream::from(quote::quote! { #input })
17}
18
19#[proc_macro_attribute]
21pub fn pulse_enum(_args: TokenStream, input: TokenStream) -> TokenStream {
22 let input = parse_macro_input!(input as DeriveInput);
23 emit::write_psl_enum(&input);
24 TokenStream::from(quote::quote! { #input })
25}
26
27#[proc_macro_attribute]
29pub fn pulse_error(_args: TokenStream, input: TokenStream) -> TokenStream {
30 let input = parse_macro_input!(input as DeriveInput);
31 emit::write_psl_error(&input);
32 TokenStream::from(quote::quote! { #input })
33}
34
35#[proc_macro_attribute]
37pub fn pulse_service(_args: TokenStream, input: TokenStream) -> TokenStream {
38 let input = parse_macro_input!(input as syn::ItemTrait);
39 emit::write_psl_service(&input);
40 TokenStream::from(quote::quote! { #input })
41}
42
43#[proc_macro_attribute]
44pub fn collection(_args: TokenStream, input: TokenStream) -> TokenStream { input }
45
46#[proc_macro_attribute]
47pub fn index(_args: TokenStream, input: TokenStream) -> TokenStream { input }
48
49#[proc_macro_attribute]
50pub fn unique(_args: TokenStream, input: TokenStream) -> TokenStream { input }
51
52#[proc_macro_attribute]
53pub fn auth(_args: TokenStream, input: TokenStream) -> TokenStream { input }