1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
//! ```rust //! use async_graphql::SimpleObject; //! use deque_loader::diesel::{DieselError, DieselLoader, DieselHandler}; //! use db::schema::users; //! use diesel::prelude::*; //! use diesel_connection::PooledConnection; //! use std::{collections::HashMap, sync::Arc}; //! //! derive_id! { //! #[derive(Identifiable)] //! #[table_name = "users"] //! #[graphql(name = "UserID")] //! pub struct UserId( #[column_name = "id"] i32); //! } //! //! #[derive(SimpleObject, Loadable, Identifiable, Associations, Queryable, Debug, Clone)] //! #[data_loader(handler = "DieselHandler<UserLoader>")] //! #[belongs_to(UserId, foreign_key = "id")] //! #[table_name = "users"] //! pub struct User { //! pub id: i32, //! pub name: String, //! } //! //! #[derive(Loader)] //! #[data_loader(handler = "DieselHandler<UserLoader>")] //! pub struct UserLoader; //! //! impl DieselLoader for UserLoader { //! type Key = UserId; //! type Value = User; //! fn load( //! conn: PooledConnection, //! keys: Vec<UserId>, //! ) -> Result<HashMap<Self::Key, Arc<Self::Value>>, DieselError> { //! let users: Vec<User> = User::belonging_to(&keys) //! .select(users::all_columns) //! .load::<User>(&conn)?; //! //! let users = users.into_iter().map(Arc::new); //! //! let mut data: HashMap<UserId, Arc<User>> = HashMap::new(); //! //! data.extend(keys.into_iter().zip(users)); //! //! Ok(data) //! } //! } //! //! ``` #![allow(dead_code)] #[doc(hidden)] #[allow(rustdoc::private_intra_doc_links)] pub extern crate async_trait; #[doc(hidden)] #[cfg(feature = "diesel-loader")] pub extern crate diesel_connection; #[doc(hidden)] pub extern crate static_init; pub use deque_loader_derive::*; pub mod batch; #[cfg(feature = "diesel-loader")] pub mod diesel; #[cfg(feature = "graphql")] pub mod graphql; mod key; #[doc(hidden)] pub mod loadable; pub mod loader; #[doc(hidden)] pub mod request; pub mod task; #[doc(hidden)] pub mod worker; pub use key::Key; pub use loadable::LoadBy;