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