Skip to main content

spacetimedsl_derive_input/
lib.rs

1pub mod api {
2    pub mod rust;
3
4    pub mod db;
5
6    pub mod dsl;
7
8    /**
9     * The representation of a Rust struct with `#[table]` and `#[dsl]` attribute macros and its columns.
10     */
11    #[derive(Clone)]
12    pub struct Table {
13        pub rust_struct: rust::table::RustStruct,
14        pub spacetimedb_table: db::table::SpacetimeDBTable,
15        pub spacetimedsl_table: dsl::table::SpacetimeDSLTable,
16        pub columns: Vec<Column>,
17        pub primary_key_column: Column,
18        pub spacetimedsl_methods: dsl::table::SpacetimeDSLTableMethods,
19    }
20
21    impl Table {
22        /**
23         * Supply the &DeriveInput which you've got from your own [derive macro](https://doc.rust-lang.org/reference/procedural-macros.html#derive-macros)
24         * to this function to build upon your SpacetimeDB rust server module with SpacetimeDSL.
25         */
26        pub fn try_parse(
27            args: proc_macro2::TokenStream,
28            input: &syn::DeriveInput,
29        ) -> syn::Result<Table> {
30            crate::internal::try_parse(args, input)
31        }
32    }
33
34    /**
35     * The representation of a field of a Rust struct with `#[table]` and `#[dsl]` attribute macros.
36     */
37    #[derive(Clone)]
38    pub struct Column {
39        pub rust_field: rust::column::RustField,
40        pub spacetimedb_column: db::column::SpacetimeDBColumn,
41        pub spacetimedsl_column: dsl::column::SpacetimeDSLColumn,
42        pub spacetimedsl_methods: Option<dsl::column::SpacetimeDSLColumnMethods>,
43    }
44}
45
46#[doc(hidden)]
47mod internal;