@@ -10,19 +10,31 @@ pub fn translate_value(value: &Value) -> Option<TsFieldType> {
1010 Value :: EscapedStringLiteral ( _) => Some ( TsFieldType :: String ) ,
1111 Value :: SingleQuotedByteStringLiteral ( _) => Some ( TsFieldType :: String ) ,
1212 Value :: DoubleQuotedByteStringLiteral ( _) => Some ( TsFieldType :: String ) ,
13- Value :: RawStringLiteral ( _) => Some ( TsFieldType :: String ) ,
13+ Value :: SingleQuotedRawStringLiteral ( _) => Some ( TsFieldType :: String ) ,
14+ Value :: DoubleQuotedRawStringLiteral ( _) => Some ( TsFieldType :: String ) ,
15+ Value :: TripleSingleQuotedString ( _) => Some ( TsFieldType :: String ) ,
16+ Value :: TripleDoubleQuotedString ( _) => Some ( TsFieldType :: String ) ,
17+ Value :: UnicodeStringLiteral ( _) => Some ( TsFieldType :: String ) ,
18+ Value :: TripleSingleQuotedRawStringLiteral ( _) => Some ( TsFieldType :: String ) ,
19+ Value :: TripleDoubleQuotedRawStringLiteral ( _) => Some ( TsFieldType :: String ) ,
20+ Value :: TripleSingleQuotedByteStringLiteral ( _) => Some ( TsFieldType :: String ) ,
21+ Value :: TripleDoubleQuotedByteStringLiteral ( _) => Some ( TsFieldType :: String ) ,
1422 Value :: NationalStringLiteral ( _) => Some ( TsFieldType :: String ) ,
1523 Value :: HexStringLiteral ( _) => Some ( TsFieldType :: String ) ,
1624 Value :: DoubleQuotedString ( _) => Some ( TsFieldType :: String ) ,
1725 Value :: Boolean ( _) => Some ( TsFieldType :: Boolean ) ,
1826 Value :: Null => Some ( TsFieldType :: Null ) ,
19- Value :: UnQuotedString ( _) => Some ( TsFieldType :: String ) ,
2027 Value :: Placeholder ( _) => None ,
2128 }
2229}
2330
2431pub fn translate_data_type ( data_type : & DataType ) -> TsFieldType {
2532 match & data_type {
33+ // Table types
34+ DataType :: Table ( _) => TsFieldType :: Object ,
35+ DataType :: NamedTable { .. } => TsFieldType :: Object ,
36+
37+ // String types
2638 DataType :: Character ( _) => TsFieldType :: String ,
2739 DataType :: Char ( _) => TsFieldType :: String ,
2840 DataType :: CharacterVarying ( _) => TsFieldType :: String ,
@@ -33,67 +45,140 @@ pub fn translate_data_type(data_type: &DataType) -> TsFieldType {
3345 DataType :: CharacterLargeObject ( _) => TsFieldType :: String ,
3446 DataType :: CharLargeObject ( _) => TsFieldType :: String ,
3547 DataType :: Clob ( _) => TsFieldType :: String ,
48+ DataType :: Text => TsFieldType :: String ,
49+ DataType :: TinyText => TsFieldType :: String ,
50+ DataType :: MediumText => TsFieldType :: String ,
51+ DataType :: LongText => TsFieldType :: String ,
52+ DataType :: String ( _) => TsFieldType :: String ,
53+ DataType :: FixedString ( _) => TsFieldType :: String ,
54+
55+ // Binary types
3656 DataType :: Binary ( _) => TsFieldType :: String ,
3757 DataType :: Varbinary ( _) => TsFieldType :: String ,
3858 DataType :: Blob ( _) => TsFieldType :: String ,
59+ DataType :: TinyBlob => TsFieldType :: String ,
60+ DataType :: MediumBlob => TsFieldType :: String ,
61+ DataType :: LongBlob => TsFieldType :: String ,
62+ DataType :: Bytes ( _) => TsFieldType :: String ,
63+ DataType :: Bytea => TsFieldType :: String ,
64+ DataType :: Bit ( _) => TsFieldType :: String ,
65+ DataType :: BitVarying ( _) => TsFieldType :: String ,
66+ DataType :: VarBit ( _) => TsFieldType :: String ,
67+
68+ // Numeric types
3969 DataType :: Numeric ( _) => TsFieldType :: Number ,
4070 DataType :: Decimal ( _) => TsFieldType :: Number ,
71+ DataType :: DecimalUnsigned ( _) => TsFieldType :: Number ,
4172 DataType :: BigNumeric ( _) => TsFieldType :: Number ,
4273 DataType :: BigDecimal ( _) => TsFieldType :: Number ,
4374 DataType :: Dec ( _) => TsFieldType :: Number ,
75+ DataType :: DecUnsigned ( _) => TsFieldType :: Number ,
4476 DataType :: Float ( _) => TsFieldType :: Number ,
77+ DataType :: FloatUnsigned ( _) => TsFieldType :: Number ,
78+ DataType :: Float4 => TsFieldType :: Number ,
79+ DataType :: Float32 => TsFieldType :: Number ,
80+ DataType :: Float64 => TsFieldType :: Number ,
81+ DataType :: Float8 => TsFieldType :: Number ,
82+ DataType :: Real => TsFieldType :: Number ,
83+ DataType :: RealUnsigned => TsFieldType :: Number ,
84+ DataType :: Double ( _) => TsFieldType :: Number ,
85+ DataType :: DoubleUnsigned ( _) => TsFieldType :: Number ,
86+ DataType :: DoublePrecision => TsFieldType :: Number ,
87+ DataType :: DoublePrecisionUnsigned => TsFieldType :: Number ,
88+
89+ // Integer types
4590 DataType :: TinyInt ( _) => TsFieldType :: Number ,
46- DataType :: UnsignedTinyInt ( _) => TsFieldType :: Number ,
91+ DataType :: TinyIntUnsigned ( _) => TsFieldType :: Number ,
92+ DataType :: UTinyInt => TsFieldType :: Number ,
4793 DataType :: SmallInt ( _) => TsFieldType :: Number ,
48- DataType :: UnsignedSmallInt ( _) => TsFieldType :: Number ,
94+ DataType :: SmallIntUnsigned ( _) => TsFieldType :: Number ,
95+ DataType :: USmallInt => TsFieldType :: Number ,
4996 DataType :: MediumInt ( _) => TsFieldType :: Number ,
50- DataType :: UnsignedMediumInt ( _) => TsFieldType :: Number ,
97+ DataType :: MediumIntUnsigned ( _) => TsFieldType :: Number ,
5198 DataType :: Int ( _) => TsFieldType :: Number ,
99+ DataType :: IntUnsigned ( _) => TsFieldType :: Number ,
100+ DataType :: Int2 ( _) => TsFieldType :: Number ,
101+ DataType :: Int2Unsigned ( _) => TsFieldType :: Number ,
102+ DataType :: Int4 ( _) => TsFieldType :: Number ,
103+ DataType :: Int4Unsigned ( _) => TsFieldType :: Number ,
104+ DataType :: Int8 ( _) => TsFieldType :: Number ,
105+ DataType :: Int8Unsigned ( _) => TsFieldType :: Number ,
106+ DataType :: Int16 => TsFieldType :: Number ,
107+ DataType :: Int32 => TsFieldType :: Number ,
108+ DataType :: Int64 => TsFieldType :: Number ,
109+ DataType :: Int128 => TsFieldType :: Number ,
110+ DataType :: Int256 => TsFieldType :: Number ,
52111 DataType :: Integer ( _) => TsFieldType :: Number ,
53- DataType :: UnsignedInt ( _) => TsFieldType :: Number ,
54- DataType :: UnsignedInteger ( _) => TsFieldType :: Number ,
112+ DataType :: IntegerUnsigned ( _) => TsFieldType :: Number ,
55113 DataType :: BigInt ( _) => TsFieldType :: Number ,
56- DataType :: UnsignedBigInt ( _) => TsFieldType :: Number ,
57- DataType :: Real => TsFieldType :: Number ,
58- DataType :: Double => TsFieldType :: Number ,
59- DataType :: DoublePrecision => TsFieldType :: Number ,
114+ DataType :: BigIntUnsigned ( _) => TsFieldType :: Number ,
115+ DataType :: HugeInt => TsFieldType :: Number ,
116+ DataType :: UHugeInt => TsFieldType :: Number ,
117+ DataType :: UBigInt => TsFieldType :: Number ,
118+ DataType :: UInt8 => TsFieldType :: Number ,
119+ DataType :: UInt16 => TsFieldType :: Number ,
120+ DataType :: UInt32 => TsFieldType :: Number ,
121+ DataType :: UInt64 => TsFieldType :: Number ,
122+ DataType :: UInt128 => TsFieldType :: Number ,
123+ DataType :: UInt256 => TsFieldType :: Number ,
124+ DataType :: Signed => TsFieldType :: Number ,
125+ DataType :: SignedInteger => TsFieldType :: Number ,
126+ DataType :: Unsigned => TsFieldType :: Number ,
127+ DataType :: UnsignedInteger => TsFieldType :: Number ,
128+
129+ // Boolean types
60130 DataType :: Boolean => TsFieldType :: Boolean ,
131+ DataType :: Bool => TsFieldType :: Boolean ,
132+
133+ // Date/Time types
61134 DataType :: Date => TsFieldType :: Date ,
135+ DataType :: Date32 => TsFieldType :: Date ,
62136 DataType :: Time ( _, _) => TsFieldType :: Date ,
63137 DataType :: Datetime ( _) => TsFieldType :: Date ,
138+ DataType :: Datetime64 ( _, _) => TsFieldType :: Date ,
64139 DataType :: Timestamp ( _, _) => TsFieldType :: String ,
65- DataType :: Interval => TsFieldType :: Any ,
140+ DataType :: TimestampNtz => TsFieldType :: String ,
141+ DataType :: Interval { .. } => TsFieldType :: Any ,
142+
143+ // JSON types
66144 DataType :: JSON => TsFieldType :: Object ,
67145 DataType :: JSONB => TsFieldType :: Object ,
146+
147+ // PostgreSQL specific types
68148 DataType :: Regclass => TsFieldType :: String ,
69- DataType :: Text => TsFieldType :: String ,
70- DataType :: String ( _) => TsFieldType :: String ,
71- DataType :: Bytea => TsFieldType :: String ,
149+ DataType :: GeometricType ( _) => TsFieldType :: Object ,
150+ DataType :: TsVector => TsFieldType :: String ,
151+ DataType :: TsQuery => TsFieldType :: String ,
152+
153+ // Complex types
72154 DataType :: Custom ( _, _) => TsFieldType :: Any ,
73155 DataType :: Array ( array_element_type_def) => match array_element_type_def {
74156 sqlparser:: ast:: ArrayElemTypeDef :: None => TsFieldType :: Array ( Box :: new ( TsFieldType :: Any ) ) ,
75157 sqlparser:: ast:: ArrayElemTypeDef :: AngleBracket ( data_type) => {
76158 TsFieldType :: Array ( Box :: new ( translate_data_type ( data_type) ) )
77159 }
78- sqlparser:: ast:: ArrayElemTypeDef :: SquareBracket ( data_type) => {
160+ sqlparser:: ast:: ArrayElemTypeDef :: SquareBracket ( data_type, _) => {
161+ TsFieldType :: Array ( Box :: new ( translate_data_type ( data_type) ) )
162+ }
163+ sqlparser:: ast:: ArrayElemTypeDef :: Parenthesis ( data_type) => {
79164 TsFieldType :: Array ( Box :: new ( translate_data_type ( data_type) ) )
80165 }
81166 } ,
82- DataType :: Enum ( _) => TsFieldType :: Array ( Box :: new ( TsFieldType :: String ) ) ,
167+ DataType :: Map ( _, _) => TsFieldType :: Object ,
168+ DataType :: Tuple ( _) => TsFieldType :: Object ,
169+ DataType :: Nested ( _) => TsFieldType :: Object ,
170+ DataType :: Enum ( _, _) => TsFieldType :: Array ( Box :: new ( TsFieldType :: String ) ) ,
83171 DataType :: Set ( _) => TsFieldType :: Array ( Box :: new ( TsFieldType :: String ) ) ,
84- DataType :: Bytes ( _) => TsFieldType :: String ,
85- DataType :: Int2 ( _) => TsFieldType :: Number ,
86- DataType :: UnsignedInt2 ( _) => TsFieldType :: Number ,
87- DataType :: Int4 ( _) => TsFieldType :: Number ,
88- DataType :: Int64 => TsFieldType :: Number ,
89- DataType :: UnsignedInt4 ( _) => TsFieldType :: Number ,
90- DataType :: Int8 ( _) => TsFieldType :: Number ,
91- DataType :: UnsignedInt8 ( _) => TsFieldType :: Number ,
92- DataType :: Float4 => TsFieldType :: Number ,
93- DataType :: Float64 => TsFieldType :: Number ,
94- DataType :: Float8 => TsFieldType :: Number ,
95- DataType :: Bool => TsFieldType :: Boolean ,
96- DataType :: Struct ( _) => TsFieldType :: Object ,
172+ DataType :: Struct ( _, _) => TsFieldType :: Object ,
173+ DataType :: Union ( _) => TsFieldType :: Object ,
174+
175+ // ClickHouse wrapper types
176+ DataType :: Nullable ( inner_type) => translate_data_type ( inner_type) ,
177+ DataType :: LowCardinality ( inner_type) => translate_data_type ( inner_type) ,
178+
179+ // Special types
97180 DataType :: Unspecified => TsFieldType :: Any ,
181+ DataType :: Trigger => TsFieldType :: Any ,
182+ DataType :: AnyType => TsFieldType :: Any ,
98183 }
99184}
0 commit comments