use diesel::expression::dsl::sql;
use diesel::*;
use diesel::types::Integer;
use test_helpers::connection;
#[test]
fn named_struct_definition() {
#[derive(Debug, Clone, Copy, PartialEq, Eq, Queryable)]
struct MyStruct {
foo: i32,
bar: i32,
}
let conn = connection();
let data = select(sql::<(Integer, Integer)>("1, 2")).get_result(&conn);
assert_eq!(Ok(MyStruct { foo: 1, bar: 2 }), data);
}
#[test]
fn tuple_struct() {
#[derive(Debug, Clone, Copy, PartialEq, Eq, Queryable)]
struct MyStruct(#[column_name(foo)] i32, #[column_name(bar)] i32);
let conn = connection();
let data = select(sql::<(Integer, Integer)>("1, 2")).get_result(&conn);
assert_eq!(Ok(MyStruct(1, 2)), data);
}
#[test]
fn tuple_struct_without_column_name_annotations() {
#[derive(Debug, Clone, Copy, PartialEq, Eq, Queryable)]
struct MyStruct(i32, i32);
let conn = connection();
let data = select(sql::<(Integer, Integer)>("1, 2")).get_result(&conn);
assert_eq!(Ok(MyStruct(1, 2)), data);
}