benzina 0.5.5

Various helper types and macros for `diesel`
Documentation
use diesel::Identifiable;

diesel::table! {
    groups (id) {
        id -> Integer,
    }
}

diesel::table! {
    users (id) {
        id -> Integer,
    }
}

#[derive(Debug, PartialEq, Eq, Identifiable)]
#[diesel(table_name = groups)]
struct Group {
    id: i32,
}

#[derive(Debug, PartialEq, Eq, Identifiable)]
#[diesel(table_name = users)]
struct User {
    id: i32,
}

#[derive(Debug, PartialEq, Eq)]
struct GroupWithUsers {
    group: Group,
    users: Vec<User>,
}

#[test]
fn collects_direct_vec_values() {
    let records = vec![
        (Group { id: 1 }, User { id: 10 }),
        (Group { id: 1 }, User { id: 11 }),
        (Group { id: 1 }, User { id: 10 }),
        (Group { id: 2 }, User { id: 12 }),
    ];

    let joined = benzina::join! {
        records,
        Vec<GroupWithUsers {
            group: One<0>,
            users: Vec<1>,
        }>,
    };

    assert_eq!(
        vec![
            GroupWithUsers {
                group: Group { id: 1 },
                users: vec![User { id: 10 }, User { id: 11 }],
            },
            GroupWithUsers {
                group: Group { id: 2 },
                users: vec![User { id: 12 }],
            },
        ],
        joined,
    );
}