fiberplane_models/providers/schema/
query_schema.rs1use super::fields::*;
2#[cfg(feature = "fp-bindgen")]
3use fp_bindgen::prelude::Serializable;
4use serde::{Deserialize, Serialize};
5
6pub type QuerySchema = Vec<QueryField>;
12
13#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
14#[cfg_attr(
15 feature = "fp-bindgen",
16 derive(Serializable),
17 fp(rust_module = "fiberplane_models::providers")
18)]
19#[non_exhaustive]
20#[serde(tag = "type", rename_all = "snake_case")]
21pub enum QueryField {
22 Array(ArrayField),
23 Checkbox(CheckboxField),
24 DateTimeRange(DateTimeRangeField),
25 File(FileField),
26 Label(LabelField),
27 Integer(IntegerField),
28 Select(SelectField),
29 Text(TextField),
30}
31
32impl From<CheckboxField> for QueryField {
33 fn from(field: CheckboxField) -> Self {
34 Self::Checkbox(field)
35 }
36}
37
38impl From<DateTimeRangeField> for QueryField {
39 fn from(field: DateTimeRangeField) -> Self {
40 Self::DateTimeRange(field)
41 }
42}
43
44impl From<FileField> for QueryField {
45 fn from(field: FileField) -> Self {
46 Self::File(field)
47 }
48}
49
50impl From<LabelField> for QueryField {
51 fn from(field: LabelField) -> Self {
52 Self::Label(field)
53 }
54}
55
56impl From<IntegerField> for QueryField {
57 fn from(field: IntegerField) -> Self {
58 Self::Integer(field)
59 }
60}
61
62impl From<SelectField> for QueryField {
63 fn from(field: SelectField) -> Self {
64 Self::Select(field)
65 }
66}
67
68impl From<TextField> for QueryField {
69 fn from(field: TextField) -> Self {
70 Self::Text(field)
71 }
72}
73
74impl From<ArrayField> for QueryField {
75 fn from(field: ArrayField) -> Self {
76 Self::Array(field)
77 }
78}