1#[allow(unused_imports)]
2#[allow(unused_macros)]
3#[cfg(test)]
4#[macro_use]
5extern crate diesel;
6
7pub extern crate async_graphql;
8pub extern crate derive_more;
9pub extern crate diesel_derive_newtype;
10pub extern crate serde;
11
12#[macro_export]
13macro_rules! derive_id {
14 ($id_newtype:item) => {
15 #[derive(
16 $crate::async_graphql::NewType,
17 $crate::derive_more::Display,
18 $crate::diesel_derive_newtype::DieselNewType,
19 $crate::serde::Deserialize,
20 $crate::serde::Serialize,
21 Clone,
22 Copy,
23 Debug,
24 Eq,
25 Hash,
26 Ord,
27 PartialEq,
28 PartialOrd,
29 )]
30 $id_newtype
31 };
32}
33
34#[cfg(test)]
35mod tests {
36 table! {
37
38 content (id) {
39 id -> Int4,
40 title -> Varchar,
41 }
42 }
43
44 table! {
45
46 users (id) {
47 id -> Int4,
48 name -> Varchar,
49 }
50 }
51
52 table! {
53
54 users_content (user_id, content_id) {
55 user_id -> Int4,
56 content_id -> Int4,
57 }
58 }
59
60 derive_id! {
61 #[derive(Identifiable)]
62 #[diesel(table_name = users)]
63 #[graphql(name = "UserID")]
64 pub struct UserId(#[diesel(column_name = "id")] i32);
65 }
66
67 derive_id! {
68 #[derive(Identifiable)]
69 #[diesel(table_name = content)]
70 #[graphql(name = "ContentID")]
71 pub struct ContentId(#[diesel(column_name = "id")] i32);
72 }
73}