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
use crate::result_set::MySqlTypeInfo;
use rbdc::db::MetaData;
use rbdc::ext::ustr::UStr;
use std::collections::HashMap;
use std::fmt::{Debug, Formatter};
use std::ops::Deref;
use std::sync::Arc;
pub struct MysqlMetaData {
pub inner: Arc<HashMap<UStr, (usize, MySqlTypeInfo)>>,
}
impl Debug for MysqlMetaData {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
self.inner.fmt(f)
}
}
impl MetaData for MysqlMetaData {
fn column_len(&self) -> usize {
self.inner.len()
}
fn column_name(&self, i: usize) -> String {
for (s, (idx, type_info)) in self.inner.deref() {
if idx.eq(&i) {
return s.to_string();
}
}
return String::new();
}
fn column_type(&self, i: usize) -> String {
for (s, (idx, type_info)) in self.inner.deref() {
if idx.eq(&i) {
return format!("{:?}", type_info.r#type);
}
}
return String::new();
}
}