fkl_parser/mir/implementation/
validation.rs

1use 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}