Skip to content

Commit 39283e6

Browse files
committed
controllers::category: Use json! macro to simplify JSON serialization code
1 parent c39e7d6 commit 39283e6

File tree

1 file changed

+11
-30
lines changed

1 file changed

+11
-30
lines changed

src/controllers/category.rs

Lines changed: 11 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -18,25 +18,18 @@ pub fn index(req: &mut dyn RequestExt) -> EndpointResult {
1818
let conn = req.db_read_only()?;
1919
let categories =
2020
Category::toplevel(&conn, sort, i64::from(options.per_page), i64::from(offset))?;
21-
let categories = categories.into_iter().map(Category::into).collect();
21+
let categories = categories
22+
.into_iter()
23+
.map(Category::into)
24+
.collect::<Vec<EncodableCategory>>();
2225

2326
// Query for the total count of categories
2427
let total = Category::count_toplevel(&conn)?;
2528

26-
#[derive(Serialize)]
27-
struct R {
28-
categories: Vec<EncodableCategory>,
29-
meta: Meta,
30-
}
31-
#[derive(Serialize)]
32-
struct Meta {
33-
total: i64,
34-
}
35-
36-
Ok(req.json(&R {
37-
categories,
38-
meta: Meta { total },
39-
}))
29+
Ok(req.json(&json!({
30+
"categories": categories,
31+
"meta": { "total": total },
32+
})))
4033
}
4134

4235
/// Handles the `GET /categories/:category_id` route.
@@ -67,19 +60,13 @@ pub fn show(req: &mut dyn RequestExt) -> EndpointResult {
6760
parent_categories: parents,
6861
};
6962

70-
#[derive(Serialize)]
71-
struct R {
72-
category: EncodableCategoryWithSubcategories,
73-
}
74-
Ok(req.json(&R {
75-
category: cat_with_subcats,
76-
}))
63+
Ok(req.json(&json!({ "category": cat_with_subcats })))
7764
}
7865

7966
/// Handles the `GET /category_slugs` route.
8067
pub fn slugs(req: &mut dyn RequestExt) -> EndpointResult {
8168
let conn = req.db_read_only()?;
82-
let slugs = categories::table
69+
let slugs: Vec<Slug> = categories::table
8370
.select((categories::slug, categories::slug, categories::description))
8471
.order(categories::slug)
8572
.load(&*conn)?;
@@ -91,11 +78,5 @@ pub fn slugs(req: &mut dyn RequestExt) -> EndpointResult {
9178
description: String,
9279
}
9380

94-
#[derive(Serialize)]
95-
struct R {
96-
category_slugs: Vec<Slug>,
97-
}
98-
Ok(req.json(&R {
99-
category_slugs: slugs,
100-
}))
81+
Ok(req.json(&json!({ "category_slugs": slugs })))
10182
}

0 commit comments

Comments
 (0)