fkl_parser/mir/implementation/
validation.rs1use serde::Deserialize;
2use serde::Serialize;
3
4#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5pub enum Validation {
6 None,
7 Required(bool),
8 Range(RangeValidation),
9 Length(LengthValidation),
10 Regex(RegexValidation),
11 Compare(CompareValidation),
12}
13
14impl Default for Validation {
15 fn default() -> Self {
16 Validation::None
17 }
18}
19
20#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
21pub struct RangeValidation {
22 pub min: Option<usize>,
23 pub max: Option<usize>,
24}
25
26#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
27pub struct LengthValidation {
28 pub min: Option<usize>,
29 pub max: Option<usize>,
30}
31
32#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
33pub struct RegexValidation {
34 pub pattern: String,
35}
36
37#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
38pub struct CompareValidation {
39 pub left: String,
40 pub right: String,
41 pub operator: CompareOperator,
42}
43
44#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
45pub enum CompareOperator {
46 Equal,
47 NotEqual,
48 GreaterThan,
49 GreaterThanOrEqual,
50 LessThan,
51 LessThanOrEqual,
52}
53
54impl Default for CompareOperator {
55 fn default() -> Self {
56 CompareOperator::Equal
57 }
58}