wtx 0.43.1

A collection of different transport implementations and related tools focused primarily on web technologies.
Documentation
use crate::{
  database::{
    Identifier,
    client::{
      mysql::{protocol::column_res::ColumnRes, ty_params::TyParams},
      rdbms::column_info::ColumnInfo,
    },
  },
  misc::Lease,
};

#[derive(Clone, Debug)]
pub(crate) struct MysqlColumnInfo {
  pub(crate) name: Identifier,
  pub(crate) ty_params: TyParams,
}

impl MysqlColumnInfo {
  pub(crate) fn from_column_res(column_res: &ColumnRes) -> Self {
    let name = if column_res.alias.is_empty() { column_res.name } else { column_res.alias };
    Self { name, ty_params: TyParams::from_column_res(column_res) }
  }
}

impl ColumnInfo for MysqlColumnInfo {
  type Ty = TyParams;

  #[inline]
  fn name(&self) -> &str {
    &self.name
  }

  #[inline]
  fn ty(&self) -> &Self::Ty {
    &self.ty_params
  }
}

impl Lease<str> for MysqlColumnInfo {
  #[inline]
  fn lease(&self) -> &str {
    &self.name
  }
}

impl Lease<TyParams> for MysqlColumnInfo {
  #[inline]
  fn lease(&self) -> &TyParams {
    &self.ty_params
  }
}