cratestack_macros/lib.rs
1mod axum;
2mod client;
3mod event;
4mod include;
5mod model;
6mod policy;
7mod procedure;
8mod relation;
9mod shared;
10mod transport;
11mod types;
12mod validators;
13mod view;
14
15use proc_macro::TokenStream;
16
17/// Full server schema: sqlx Postgres backend, `Cratestack` runtime, axum
18/// router, procedures, events. Pass `db = Postgres` (only value currently
19/// supported; MySQL / SQLite-via-sqlx will land in a future release).
20#[proc_macro]
21pub fn include_server_schema(input: TokenStream) -> TokenStream {
22 include::include_server_schema(input)
23}
24
25/// Embedded ORM schema: rusqlite backend only. Compiles to native and to
26/// `wasm32-unknown-unknown` (via `sqlite-wasm-rs`). No sqlx, no axum, no
27/// procedures. Local apps that don't need an RPC surface use this.
28#[proc_macro]
29pub fn include_embedded_schema(input: TokenStream) -> TokenStream {
30 include::include_embedded_schema(input)
31}
32
33/// HTTP client schema: model/input/procedure stubs for talking to a server
34/// over the wire. No DB, no router, no FromRow impls. Renamed from
35/// `include_client_macro!` in 0.3.0.
36#[proc_macro]
37pub fn include_client_schema(input: TokenStream) -> TokenStream {
38 include::include_client_schema(input)
39}