#[derive(Debug, Clone)]
pub enum LibSqlValue {
Null,
Integer(i64),
Real(f64),
Text(String),
Blob(Vec<u8>),
}
impl LibSqlValue {
pub fn read_text(&self) -> &str {
match self {
LibSqlValue::Text(s) => s.as_str(),
_ => panic!("Expected Text value, got {:?}", self),
}
}
pub fn read_integer(&self) -> i32 {
match self {
LibSqlValue::Integer(i) => *i as i32,
_ => panic!("Expected Integer value, got {:?}", self),
}
}
pub fn read_long(&self) -> i64 {
match self {
LibSqlValue::Integer(i) => *i,
_ => panic!("Expected Integer value, got {:?}", self),
}
}
pub fn read_double(&self) -> f64 {
match self {
LibSqlValue::Real(f) => *f,
LibSqlValue::Integer(i) => *i as f64,
_ => panic!("Expected Real value, got {:?}", self),
}
}
pub fn read_blob(&self) -> &[u8] {
match self {
LibSqlValue::Blob(b) => b.as_slice(),
_ => panic!("Expected Blob value, got {:?}", self),
}
}
pub fn is_null(&self) -> bool {
matches!(self, LibSqlValue::Null)
}
}