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