rust_query

Derive Macro FromDummy

Source
#[derive(FromDummy)]
Expand description

Derive FromDummy to create a new *Dummy struct.

This *Dummy struct can then be used with [Query::into_vec] or [Transaction::query_one]. Usage can also be nested.

Example:

#[rust_query::migration::schema]
pub enum Schema {
    Thing {
        details: Details,
        beta: f64,
        seconds: i64,
    },
    Details {
        name: String
    },
}
use v0::*;
use rust_query::{Table, FromDummy, Transaction};

#[derive(FromDummy)]
struct MyData {
    seconds: i64,
    is_it_real: bool,
    name: String,
    other: OtherData
}

#[derive(FromDummy)]
struct OtherData {
    alpha: f64,
    beta: f64,
}

pub fn do_query(db: &Transaction<Schema>) -> Vec<MyData> {
    db.query(|rows| {
        let thing = Thing::join(rows);

        rows.into_vec(MyDataDummy {
            seconds: thing.seconds(),
            is_it_real: true,
            name: thing.details().name(),
            other: OtherDataDummy {
                alpha: 0.5,
                beta: thing.beta(),
            },
        })
    })
}