fiberplane_models/providers/schema/
query_schema.rs

1#[cfg(feature = "fp-bindgen")]
2use fp_bindgen::prelude::Serializable;
3use serde::{Deserialize, Serialize};
4
5use super::fields::*;
6
7/// Defines the fields that should be included in the query data.
8///
9/// Query data is encoded as "application/x-www-form-urlencoded", unless a
10/// `File` field is present in the schema, in which case "multipart/form-data"
11/// may be used.
12pub 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}