Skip to main content

floz_macros/
lib.rs

1extern crate proc_macro;
2
3use proc_macro::TokenStream;
4
5
6
7#[proc_macro_attribute]
8pub fn model(attr: TokenStream, item: TokenStream) -> TokenStream {
9    floz_macros_core::model::expand_model(attr.into(), item.into()).into()
10}
11
12#[proc_macro_attribute]
13pub fn route(attr: TokenStream, item: TokenStream) -> TokenStream {
14    floz_macros_core::route::expand_route(attr.into(), item.into()).into()
15}
16
17#[proc_macro_attribute]
18pub fn task(attr: TokenStream, item: TokenStream) -> TokenStream {
19    floz_macros_core::task::expand_task(attr.into(), item.into()).into()
20}
21
22#[proc_macro_attribute]
23pub fn main(_attr: TokenStream, item: TokenStream) -> TokenStream {
24    floz_macros_core::route::expand_main(item.into()).into()
25}
26
27#[proc_macro_attribute]
28pub fn channel_gate(attr: TokenStream, item: TokenStream) -> TokenStream {
29    floz_macros_core::channel::expand_channel_gate(attr.into(), item.into()).into()
30}
31
32/// Embeds `vX.json` fingerprint snapshots directly into the application binary 
33/// at compile-time by discovering them recursively through your `src/app/**/` models.
34/// Creates a securely structured static dictionary for dynamic multi-tenant migrations
35/// to utilize during production SaaS initializations without filesystem access.
36#[proc_macro]
37pub fn embed_migrations(_input: TokenStream) -> TokenStream {
38    floz_macros_core::embed::expand_embed_migrations().into()
39}