Documentation

#[cfg(test)]
#[cfg(not(feature = "sqlite"))]
mod update {
    use arel::prelude::*;

    #[arel::arel]
    struct User {
        id: i64,
    }
    #[test]
    fn test_update() {
        let sql = User::update_all(json!({"name": "Tom"}))
            .r#where(json!({"x": 1}))
            .where_range("age", ..18)
            .where_range("login_time", 0..=3)
            .order(json!("id desc"))
            .offset(1)
            .limit(5)
            .to_sql_string().unwrap();
        assert_eq!(sql, "UPDATE `users` SET `users`.`name` = 'Tom' WHERE `users`.`x` = 1 AND `users`.`age` < 18 AND `users`.`login_time` BETWEEN 0 AND 3 ORDER BY id desc LIMIT 5 OFFSET 1");

        let sql = User::query()
            .r#where(json!({"x": 1}))
            .update_all(json!({"name": "Tom"}))
            .to_sql_string().unwrap();
        assert_eq!(sql, "UPDATE `users` SET `users`.`name` = 'Tom' WHERE `users`.`id` IN (SELECT `id` FROM (SELECT `users`.`id` FROM `users` WHERE `users`.`x` = 1) AS __arel_subquery_temp)");

        let mut query = User::query();
        query.r#where(json!({"x": 1}));
        let sql = query.clone().update_all(json!({"name": "Tom"})).to_sql_string().unwrap();
        assert_eq!(sql, "UPDATE `users` SET `users`.`name` = 'Tom' WHERE `users`.`id` IN (SELECT `id` FROM (SELECT `users`.`id` FROM `users` WHERE `users`.`x` = 1) AS __arel_subquery_temp)");

        let sql = query.to_sql_string().unwrap();
        assert_eq!(sql, "SELECT `users`.* FROM `users` WHERE `users`.`x` = 1");


        let sql = User::table().increment("x", 2).r#where(json!({"id": 1})).to_sql_string().unwrap();
        assert_eq!(sql, "UPDATE `users` SET `users`.`x` = COALESCE(`users`.`x`, 0) + 2 WHERE `users`.`id` = 1");
        let sql = User::table().decrement("x", 2).r#where(json!({"id": 1})).to_sql_string().unwrap();
        assert_eq!(sql, "UPDATE `users` SET `users`.`x` = COALESCE(`users`.`x`, 0) - 2 WHERE `users`.`id` = 1");
    }
}