2 schema::{category, category::dsl::*},
5 use diesel::{dsl::*, result::Error, *};
8 #[derive(Queryable, Identifiable, PartialEq, Debug, Serialize)]
9 #[table_name = "category"]
15 #[derive(Insertable, AsChangeset)]
16 #[table_name = "category"]
17 pub struct CategoryForm {
21 impl Crud<CategoryForm> for Category {
22 fn read(conn: &PgConnection, category_id: i32) -> Result<Self, Error> {
23 category.find(category_id).first::<Self>(conn)
26 fn create(conn: &PgConnection, new_category: &CategoryForm) -> Result<Self, Error> {
29 .get_result::<Self>(conn)
35 new_category: &CategoryForm,
36 ) -> Result<Self, Error> {
37 diesel::update(category.find(category_id))
39 .get_result::<Self>(conn)
44 pub fn list_all(conn: &PgConnection) -> Result<Vec<Self>, Error> {
45 category.load::<Self>(conn)
51 use crate::{category::Category, tests::establish_unpooled_connection};
55 let conn = establish_unpooled_connection();
57 let categories = Category::list_all(&conn).unwrap();
58 let expected_first_category = Category {
60 name: "Discussion".into(),
63 assert_eq!(expected_first_category, categories[0]);