Codegen date & time column Rust type mapping
This commit is contained in:
parent
a17d5452f8
commit
a9f9599a4d
@ -27,8 +27,6 @@ impl Column {
|
|||||||
ColumnType::Char(_)
|
ColumnType::Char(_)
|
||||||
| ColumnType::String(_)
|
| ColumnType::String(_)
|
||||||
| ColumnType::Text
|
| ColumnType::Text
|
||||||
| ColumnType::Time(_)
|
|
||||||
| ColumnType::Date
|
|
||||||
| ColumnType::Custom(_) => "String",
|
| ColumnType::Custom(_) => "String",
|
||||||
ColumnType::TinyInteger(_) => "i8",
|
ColumnType::TinyInteger(_) => "i8",
|
||||||
ColumnType::SmallInteger(_) => "i16",
|
ColumnType::SmallInteger(_) => "i16",
|
||||||
@ -37,6 +35,8 @@ impl Column {
|
|||||||
ColumnType::Float(_) => "f32",
|
ColumnType::Float(_) => "f32",
|
||||||
ColumnType::Double(_) => "f64",
|
ColumnType::Double(_) => "f64",
|
||||||
ColumnType::Json | ColumnType::JsonBinary => "Json",
|
ColumnType::Json | ColumnType::JsonBinary => "Json",
|
||||||
|
ColumnType::Date => "Date",
|
||||||
|
ColumnType::Time(_) => "Time",
|
||||||
ColumnType::DateTime(_) | ColumnType::Timestamp(_) => "DateTime",
|
ColumnType::DateTime(_) | ColumnType::Timestamp(_) => "DateTime",
|
||||||
ColumnType::TimestampWithTimeZone(_) => "DateTimeWithTimeZone",
|
ColumnType::TimestampWithTimeZone(_) => "DateTimeWithTimeZone",
|
||||||
ColumnType::Decimal(_) | ColumnType::Money(_) => "Decimal",
|
ColumnType::Decimal(_) | ColumnType::Money(_) => "Decimal",
|
||||||
@ -194,6 +194,11 @@ mod tests {
|
|||||||
make_col!("CAKE_FILLING_ID", ColumnType::Double(None)),
|
make_col!("CAKE_FILLING_ID", ColumnType::Double(None)),
|
||||||
make_col!("CAKE-FILLING-ID", ColumnType::Binary(None)),
|
make_col!("CAKE-FILLING-ID", ColumnType::Binary(None)),
|
||||||
make_col!("CAKE", ColumnType::Boolean),
|
make_col!("CAKE", ColumnType::Boolean),
|
||||||
|
make_col!("date", ColumnType::Date),
|
||||||
|
make_col!("time", ColumnType::Time(None)),
|
||||||
|
make_col!("date_time", ColumnType::DateTime(None)),
|
||||||
|
make_col!("timestamp", ColumnType::Timestamp(None)),
|
||||||
|
make_col!("timestamp_tz", ColumnType::TimestampWithTimeZone(None)),
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -211,6 +216,11 @@ mod tests {
|
|||||||
"cake_filling_id",
|
"cake_filling_id",
|
||||||
"cake_filling_id",
|
"cake_filling_id",
|
||||||
"cake",
|
"cake",
|
||||||
|
"date",
|
||||||
|
"time",
|
||||||
|
"date_time",
|
||||||
|
"timestamp",
|
||||||
|
"timestamp_tz",
|
||||||
];
|
];
|
||||||
for (col, snack_case) in columns.into_iter().zip(snack_cases) {
|
for (col, snack_case) in columns.into_iter().zip(snack_cases) {
|
||||||
assert_eq!(col.get_name_snake_case().to_string(), snack_case);
|
assert_eq!(col.get_name_snake_case().to_string(), snack_case);
|
||||||
@ -231,6 +241,11 @@ mod tests {
|
|||||||
"CakeFillingId",
|
"CakeFillingId",
|
||||||
"CakeFillingId",
|
"CakeFillingId",
|
||||||
"Cake",
|
"Cake",
|
||||||
|
"Date",
|
||||||
|
"Time",
|
||||||
|
"DateTime",
|
||||||
|
"Timestamp",
|
||||||
|
"TimestampTz",
|
||||||
];
|
];
|
||||||
for (col, camel_case) in columns.into_iter().zip(camel_cases) {
|
for (col, camel_case) in columns.into_iter().zip(camel_cases) {
|
||||||
assert_eq!(col.get_name_camel_case().to_string(), camel_case);
|
assert_eq!(col.get_name_camel_case().to_string(), camel_case);
|
||||||
@ -241,7 +256,21 @@ mod tests {
|
|||||||
fn test_get_rs_type() {
|
fn test_get_rs_type() {
|
||||||
let columns = setup();
|
let columns = setup();
|
||||||
let rs_types = vec![
|
let rs_types = vec![
|
||||||
"String", "String", "i8", "i16", "i32", "i64", "f32", "f64", "Vec<u8>", "bool",
|
"String",
|
||||||
|
"String",
|
||||||
|
"i8",
|
||||||
|
"i16",
|
||||||
|
"i32",
|
||||||
|
"i64",
|
||||||
|
"f32",
|
||||||
|
"f64",
|
||||||
|
"Vec<u8>",
|
||||||
|
"bool",
|
||||||
|
"Date",
|
||||||
|
"Time",
|
||||||
|
"DateTime",
|
||||||
|
"DateTime",
|
||||||
|
"DateTimeWithTimeZone",
|
||||||
];
|
];
|
||||||
for (mut col, rs_type) in columns.into_iter().zip(rs_types) {
|
for (mut col, rs_type) in columns.into_iter().zip(rs_types) {
|
||||||
let rs_type: TokenStream = rs_type.parse().unwrap();
|
let rs_type: TokenStream = rs_type.parse().unwrap();
|
||||||
@ -271,6 +300,11 @@ mod tests {
|
|||||||
"ColumnType::Double.def()",
|
"ColumnType::Double.def()",
|
||||||
"ColumnType::Binary.def()",
|
"ColumnType::Binary.def()",
|
||||||
"ColumnType::Boolean.def()",
|
"ColumnType::Boolean.def()",
|
||||||
|
"ColumnType::Date.def()",
|
||||||
|
"ColumnType::Time.def()",
|
||||||
|
"ColumnType::DateTime.def()",
|
||||||
|
"ColumnType::Timestamp.def()",
|
||||||
|
"ColumnType::TimestampWithTimeZone.def()",
|
||||||
];
|
];
|
||||||
for (mut col, col_def) in columns.into_iter().zip(col_defs) {
|
for (mut col, col_def) in columns.into_iter().zip(col_defs) {
|
||||||
let mut col_def: TokenStream = col_def.parse().unwrap();
|
let mut col_def: TokenStream = col_def.parse().unwrap();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user