1use crate::result_set::MySqlTypeInfo;
2use rbdc::db::MetaData;
3use rbdc::ext::ustr::UStr;
4use std::collections::HashMap;
5use std::fmt::{Debug, Formatter};
6use std::ops::Deref;
7use std::sync::Arc;
8
9pub struct MysqlMetaData {
10 pub inner: Arc<HashMap<UStr, (usize, MySqlTypeInfo)>>,
11}
12impl Debug for MysqlMetaData {
13 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
14 self.inner.fmt(f)
15 }
16}
17
18impl MetaData for MysqlMetaData {
19 fn column_len(&self) -> usize {
20 self.inner.len()
21 }
22
23 fn column_name(&self, i: usize) -> String {
24 for (s, (idx, _)) in self.inner.deref() {
25 if idx.eq(&i) {
26 return s.to_string();
27 }
28 }
29 return String::new();
30 }
31
32 fn column_type(&self, i: usize) -> String {
33 for (_, (idx, type_info)) in self.inner.deref() {
34 if idx.eq(&i) {
35 return format!("{:?}", type_info.r#type);
36 }
37 }
38 return String::new();
39 }
40}