use std::time::SystemTime;
use db_derive::{PostgresMeta};
mod test;
#[allow(dead_code)]
#[derive(Debug, PostgresMeta)]
#[pg_mapper(table = "oms_order")]
pub struct Command{
#[id]
id: i64,
#[field(type="varchar", length=50)]
name: String,
#[field(type="varchar", length=200)]
nickname: Option<String>,
age: Option<i16>,
create_time: Option<SystemTime>,
}
#[derive(Debug)]
enum Data {
BigInt(Option<i64>),
Int(Option<i32>),
SmallInt(Option<i16>),
Float(Option<f64>),
String(Option<String>),
SystemTime(Option<SystemTime>),
}
impl Command {
pub fn to_vec_1(self) -> Result<Vec<Data>, &'static str> {
let mut v = vec![];
v.push(Data::BigInt(Some(self.id)));
v.push(Data::String(Some(self.name)));
v.push(Data::String(self.nickname));
v.push(Data::SmallInt(self.age));
v.push(Data::SystemTime(self.create_time));
Ok(v)
}
}
pub fn main(){
let mut data_vec: Vec<Data> = Vec::new();
data_vec.push(Data::Int(Some(10)));
data_vec.push(Data::Float(Some(3.14)));
data_vec.push(Data::String(Some(String::from("Hello, World!"))));
for datum in data_vec {
match datum {
Data::Int(i) => println!("Integer: {}", i.unwrap()),
Data::Float(f) => println!("Float: {}", f.unwrap()),
Data::String(s) => println!("String: {}", s.unwrap()),
_ => {}
}
}
let c = Command::meta();
let (table_name, fields): (String, Vec<(String, String, u16, String, bool)>) = Command::meta();
println!("{:?}", fields);
let b = Command {
id: 0,
name: "111".to_string(),
nickname: None,
age: None,
create_time: None,
};
let b = b.to_vec_1();
println!("builder: {:?}", b);
}