sql_query_builder 2.6.2

Write SQL queries in a simple and composable way
Documentation
#[cfg(any(feature = "postgresql", feature = "sqlite", feature = "mysql"))]
mod select_command {
  use pretty_assertions::assert_eq;
  use sql_query_builder as sql;

  #[test]
  fn method_limit_should_add_the_limit_clause() {
    let query = sql::Select::new().limit("3").as_string();
    let expected_query = "LIMIT 3";

    assert_eq!(expected_query, query);
  }

  #[test]
  fn method_limit_should_override_the_current_value() {
    let query = sql::Select::new().limit("3").limit("4").as_string();
    let expected_query = "LIMIT 4";

    assert_eq!(expected_query, query);
  }

  #[test]
  fn method_limit_should_trim_space_of_the_argument() {
    let query = sql::Select::new().limit("  50  ").as_string();
    let expected_query = "LIMIT 50";

    assert_eq!(expected_query, query);
  }

  #[test]
  fn clause_limit_should_be_after_order_by_clause() {
    let query = sql::Select::new().order_by("created_at desc").limit("42").as_string();
    let expected_query = "ORDER BY created_at desc LIMIT 42";

    assert_eq!(expected_query, query);
  }

  #[test]
  fn method_raw_before_should_add_raw_sql_before_limit_clause() {
    let query = sql::Select::new()
      .raw_before(sql::SelectClause::Limit, "group by id")
      .limit("10")
      .as_string();
    let expected_query = "group by id LIMIT 10";

    assert_eq!(expected_query, query);
  }

  #[test]
  fn method_raw_after_should_add_raw_sql_after_limit_clause() {
    let query = sql::Select::new()
      .limit("10")
      .raw_after(sql::SelectClause::Limit, "except select id, login")
      .as_string();
    let expected_query = "LIMIT 10 except select id, login";

    assert_eq!(expected_query, query);
  }
}

#[cfg(feature = "mysql")]
mod delete_command {
  use pretty_assertions::assert_eq;
  use sql_query_builder as sql;

  #[test]
  fn method_limit_should_add_the_limit_clause() {
    let query = sql::Delete::new().limit("3").as_string();
    let expected_query = "LIMIT 3";

    assert_eq!(expected_query, query);
  }

  #[test]
  fn method_limit_should_override_the_current_value() {
    let query = sql::Delete::new().limit("3").limit("4").as_string();
    let expected_query = "LIMIT 4";

    assert_eq!(expected_query, query);
  }

  #[test]
  fn method_limit_should_trim_space_of_the_argument() {
    let query = sql::Delete::new().limit("  50  ").as_string();
    let expected_query = "LIMIT 50";

    assert_eq!(expected_query, query);
  }

  #[test]
  fn clause_limit_should_be_after_order_by_clause() {
    let query = sql::Delete::new().order_by("created_at desc").limit("42").as_string();
    let expected_query = "ORDER BY created_at desc LIMIT 42";

    assert_eq!(expected_query, query);
  }

  #[test]
  fn method_raw_before_should_add_raw_sql_before_limit_clause() {
    let query = sql::Delete::new()
      .raw_before(sql::DeleteClause::Limit, "order by id")
      .limit("10")
      .as_string();
    let expected_query = "order by id LIMIT 10";

    assert_eq!(expected_query, query);
  }

  #[test]
  fn method_raw_after_should_add_raw_sql_after_limit_clause() {
    let query = sql::Delete::new()
      .limit("10")
      .raw_after(sql::DeleteClause::Limit, "/* uncommon argument */")
      .as_string();
    let expected_query = "LIMIT 10 /* uncommon argument */";

    assert_eq!(expected_query, query);
  }
}

#[cfg(feature = "mysql")]
mod update_command {
  use pretty_assertions::assert_eq;
  use sql_query_builder as sql;

  #[test]
  fn method_limit_should_add_the_limit_clause() {
    let query = sql::Update::new().limit("3").as_string();
    let expected_query = "LIMIT 3";

    assert_eq!(expected_query, query);
  }

  #[test]
  fn method_limit_should_override_the_current_value() {
    let query = sql::Update::new().limit("3").limit("4").as_string();
    let expected_query = "LIMIT 4";

    assert_eq!(expected_query, query);
  }

  #[test]
  fn method_limit_should_trim_space_of_the_argument() {
    let query = sql::Update::new().limit("  50  ").as_string();
    let expected_query = "LIMIT 50";

    assert_eq!(expected_query, query);
  }

  #[test]
  fn clause_limit_should_be_after_order_by_clause() {
    let query = sql::Update::new().order_by("created_at desc").limit("42").as_string();
    let expected_query = "ORDER BY created_at desc LIMIT 42";

    assert_eq!(expected_query, query);
  }

  #[test]
  fn method_raw_before_should_add_raw_sql_before_limit_clause() {
    let query = sql::Update::new()
      .raw_before(sql::UpdateClause::Limit, "order by id")
      .limit("10")
      .as_string();
    let expected_query = "order by id LIMIT 10";

    assert_eq!(expected_query, query);
  }

  #[test]
  fn method_raw_after_should_add_raw_sql_after_limit_clause() {
    let query = sql::Update::new()
      .limit("10")
      .raw_after(sql::UpdateClause::Limit, "/* uncommon argument */")
      .as_string();
    let expected_query = "LIMIT 10 /* uncommon argument */";

    assert_eq!(expected_query, query);
  }
}