rbdc_mysql/
meta_data.rs

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}