// use async_graphql::dataloader::*; // use async_graphql::*; // use itertools::Itertools; // use std::collections::HashMap; // use std::sync::Arc; // // use crate::domain::rolle::model::Rolle; // use crate::scalar::Id; // // pub struct BenutzerRollenLoader { // pub pool: sqlx::PgPool, // } // // impl Loader for BenutzerRollenLoader { // type Value = Vec; // type Error = Arc; // // async fn load(&self, keys: &[Id]) -> Result, Self::Error> { // let rows = sqlx::query!( // r#" // SELECT // br.benutzer_id, // r.id, // r.rollenname, // r.erstellt_am, // r.geaendert_am // FROM rollen AS r // LEFT JOIN benutzer_rollen AS br ON r.id = br.rolle_id // WHERE br.benutzer_id = ANY($1); // "#, // keys // ) // .fetch_all(&self.pool) // .await? // .into_iter() // .map(|row| { // ( // row.benutzer_id, // Rolle { // id: row.id, // rollenname: row.rollenname, // erstellt_am: row.erstellt_am, // geaendert_am: row.geaendert_am, // }, // ) // }) // .into_group_map(); // // Ok(rows) // } // }