sql_query_builder 2.6.2

Write SQL queries in a simple and composable way
Documentation
use crate::{
  concat::{concat_raw_before_after, Concat},
  fmt,
  structure::{DropTable, DropTableParams},
};

impl Concat for DropTable {
  fn concat(&self, fmts: &fmt::Formatter) -> String {
    let mut query = "".to_string();

    query = self.concat_raw(query, &fmts, &self._raw);
    query = self.concat_drop_table(query, &fmts);

    query.trim_end().to_string()
  }
}

impl DropTable {
  fn concat_drop_table(&self, query: String, fmts: &fmt::Formatter) -> String {
    let fmt::Formatter { comma, lb, space, .. } = fmts;

    let sql = if self._drop_table.is_empty() == false {
      let if_exists = if self._if_exists {
        format!("IF EXISTS{space}")
      } else {
        "".to_string()
      };

      let table_names = if cfg!(any(feature = "postgresql", feature = "mysql")) {
        self
          ._drop_table
          .iter()
          .filter(|item| item.is_empty() == false)
          .map(|item| item.as_str())
          .collect::<Vec<_>>()
          .join(comma)
      } else {
        self._drop_table.last().unwrap().to_string()
      };

      format!("DROP TABLE{space}{if_exists}{table_names}{space}{lb}")
    } else {
      "".to_string()
    };

    concat_raw_before_after(
      &self._raw_before,
      &self._raw_after,
      query,
      fmts,
      DropTableParams::DropTable,
      sql,
    )
  }
}