use sqly::derive::*;
#[derive(Table)]
#[sqly(table = "c34")]
#[sqly(delete, insert, select, update)]
struct C34Table {
#[sqly(key)]
#[sqly(skip = insert)]
id: i32,
one: i32,
two: String,
three: Option<String>,
}
#[test]
fn c34_derive_struct() {
let obj = DeleteC34Table { id: 0 };
let (sql, args) = obj.delete_sql();
assert_eq!(
sql,
r#"
DELETE FROM c34 AS "self"
WHERE
"id" = $1
"#
.trim_ascii()
);
let obj = InsertC34Table {
one: 1,
two: String::from("two"),
three: None,
};
let (sql, args) = obj.insert_sql();
assert_eq!(
sql,
r#"
INSERT INTO c34 AS "self" (
"one",
"two",
"three"
) VALUES (
$1,
$2,
$3
)
"#
.trim_ascii()
);
let obj = SelectC34Table { id: 0 };
let (sql, args) = obj.select_sql();
assert_eq!(
sql,
r#"
SELECT
"self"."id",
"self"."one",
"self"."two",
"self"."three"
FROM c34 AS "self"
WHERE
"self"."id" = $1
"#
.trim_ascii()
);
let obj = UpdateC34Table {
id: 0,
one: 1,
two: String::from("two"),
three: None,
};
let (sql, args) = obj.update_sql();
assert_eq!(
sql,
r#"
UPDATE c34 AS "self"
SET
"one" = $1,
"two" = $2,
"three" = $3
WHERE
"id" = $4
"#
.trim_ascii()
);
}