1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
use serde::{Deserialize, Serialize};

#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub enum FieldType {
  Unit,

  String,
  EncryptedString,

  Nothing,
  Any,

  Boolean,
  Byte,
  Short,
  Integer,
  Long,
  Float,
  Double,
  BigDecimal,

  ByteArray,
  Uuid,

  Date,
  Time,
  Timestamp,
  TimestampZoned,

  List { t: Box<FieldType> },
  Set { t: Box<FieldType> },
  Map { k: Box<FieldType>, v: Box<FieldType> },

  Ref,
  Json,
  Xml,

  Enum { key: String },
  Struct { key: String },
  Object { key: String, fields: Vec<String> },
  Intersection { key: String, types: Vec<FieldType> },
  Union { key: String, types: Vec<FieldType> },
  Method { params: Vec<String>, ret: Box<FieldType> },

  Unknown { t: String }
}