"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.
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;
struct Query {
id: ::core::option::Option
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"
);
} ```