#![cfg(feature = "derive")]
use qraft::expression::EqExt;
use qraft::select;
use qraft::{Postgres, Qraft, Sqlite, alias};
#[derive(Qraft)]
pub struct User {
id: i64,
name: Option<String>,
}
#[test]
fn alias_macro_exposes_const_columns() {
alias!(u: User);
let stmt = select((u::id, u::name))
.from(u::table)
.filter(u::id.eq(7))
.to_debug_sql::<Postgres>();
assert_eq!(
stmt,
r#"select "u"."id", "u"."name" from "users" as "u" where "u"."id" = $1; params=[7]"#
);
}
#[test]
fn alias_macro_supports_joins() {
alias!(u: User);
alias!(other: User);
let stmt = select((u::id, other::name))
.from(u::table)
.inner_join(other::table.on(u::id.eq(other::id)))
.to_debug_sql::<Sqlite>();
assert_eq!(
stmt,
r#"select "u"."id", "other"."name" from "users" as "u" inner join "users" as "other" on "u"."id" = "other"."id"; params=[]"#
);
}
#[test]
fn alias_macro_supports_updates() {
alias!(u: User);
let stmt = qraft::update(u::table)
.set(u::name.eq("lea"))
.filter(u::id.eq(1))
.to_debug_sql::<Sqlite>();
assert_eq!(
stmt,
r#"update "users" as "u" set "name" = ? where "u"."id" = ?; params=["lea", 1]"#
);
}