Skip to main content

spacetimedsl_derive_input/api/dsl/
column.rs

1use super::{foreign_key::ForeignKey, getter::Getter, setter::Setter, wrapper::WrapperType};
2use crate::api::dsl::{method::SpacetimeDSLMethod, mut_getter::MutGetter};
3
4#[derive(Clone)]
5pub struct SpacetimeDSLColumn {
6    pub is_option: bool,
7    // Only `Some(T)` if it has `#[create_wrapper(MyTableId)]` or `#[use_wrapper(path = path::to::MyTableId)]`.
8    pub wrapper_type: Option<WrapperType>,
9    // Only `Some(T)` if it has `#[foreign_key(table = my_table, column = my_column, on_delete = OnDeleteStrategy)]`.
10    pub foreign_key: Option<ForeignKey>,
11    pub getter: Option<Getter>,
12    // Only `Some(T)` if mutable
13    pub mut_getter: Option<MutGetter>,
14    // Only `Some(T)` if mutable
15    pub setter: Option<Setter>,
16}
17
18#[derive(Clone)]
19pub enum SpacetimeDSLColumnMethods {
20    ForUniqueIndex(SpacetimeDSLColumnMethodsForUniqueIndex),
21    ForIndex(SpacetimeDSLColumnMethodsForIndex),
22}
23
24#[derive(Clone)]
25pub struct SpacetimeDSLColumnMethodsForUniqueIndex {
26    pub get_one_option: SpacetimeDSLMethod,
27    pub update: Option<SpacetimeDSLMethod>,
28    pub delete_one: SpacetimeDSLMethod,
29}
30
31#[derive(Clone)]
32pub struct SpacetimeDSLColumnMethodsForIndex {
33    pub get_many: SpacetimeDSLMethod,
34    pub delete_many: SpacetimeDSLMethod,
35}