tosqlcondition

"Tosqlcondition" is a convenient derived macro that generates SQL query conditions, reducing the amount of manual coding required. However, it currently has limited capabilities and can only support a few features, such as WHERE and LIMIT.

useages

table

sql CREATE TABLE `od_commands` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `name` char(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

Perhaps we want to use query commands with certain files. In Rust, we could create a struct to handle this.

```rust use core::option; use tosqlcondition::ToSqlCondition;

[derive(ToSqlCondition, Debug)]

struct Query { id: ::core::option::Option, name: option::Option, offset: Option, limit: Option, }

[derive(ToSqlCondition, Debug)]

struct QueryNoOption { id: i32, name: String, offset: u32, limit: u32, }

fn main() { let (q1, q2, q3, q4, q5) = ( Query { id: Some(1), name: Some("tom".tostring()), offset: None, limit: Some(10), }, Query { id: None, name: None, offset: None, limit: None, }, Query { id: Some(1), name: None, offset: Some(1), limit: None, }, Query { id: Some(1), name: None, offset: Some(1), limit: Some(1), }, Query { id: Some(1), name: Some("tom".tostring()), offset: None, limit: None, }, ); asserteq!( q1.tosqlcondition(), " WHERE id = 1 AND name = 'tom' LIMIT 10".tostring() ); asserteq!(q2.tosqlcondition(), "".tostring()); asserteq!(q3.tosqlcondition(), " WHERE id = 1 OFFSET 1".tostring()); asserteq!( q4.tosqlcondition(), " WHERE id = 1 OFFSET 1 LIMIT 1".tostring() ); asserteq!( q5.tosqlcondition(), " WHERE id = 1 AND name = 'tom'".tostring() );

let q = QueryNoOption {
    id: 1,
    name: "tom".to_string(),
    offset: 1,
    limit: 1,
};

assert_eq!(
    q.to_sql_condition(),
    " WHERE id = 1 AND name = 'tom' OFFSET 1 LIMIT 1"
);

} ```