Skip to main content

cratestack_macros/
lib.rs

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