|
7 | 7 |
|
8 | 8 | use crate::controllers::prelude::*;
|
9 | 9 |
|
10 |
| -use crate::models::Version; |
| 10 | +use crate::models::{Crate, Version}; |
11 | 11 | use crate::schema::*;
|
12 | 12 | use crate::views::EncodableVersion;
|
13 | 13 |
|
14 |
| -use super::version_and_crate; |
15 |
| - |
16 | 14 | /// Handles the `GET /versions` route.
|
17 | 15 | pub fn index(req: &mut dyn Request) -> CargoResult<Response> {
|
18 | 16 | use diesel::dsl::any;
|
@@ -40,28 +38,18 @@ pub fn index(req: &mut dyn Request) -> CargoResult<Response> {
|
40 | 38 | Ok(req.json(&R { versions }))
|
41 | 39 | }
|
42 | 40 |
|
43 |
| -/// Handles the `GET /versions/:version_id` and |
44 |
| -/// `GET /crates/:crate_id/:version` routes. |
45 |
| -/// |
46 |
| -/// The frontend doesn't appear to hit either of these endpoints. Instead the |
47 |
| -/// version information appears to be returned by `krate::show`. |
48 |
| -/// |
49 |
| -/// FIXME: These two routes have very different semantics and should be split into |
50 |
| -/// a separate function for each endpoint. |
51 |
| -pub fn show(req: &mut dyn Request) -> CargoResult<Response> { |
52 |
| - let (version, krate) = match req.params().find("crate_id") { |
53 |
| - Some(..) => version_and_crate(req)?, |
54 |
| - None => { |
55 |
| - let id = &req.params()["version_id"]; |
56 |
| - let id = id.parse().unwrap_or(0); |
57 |
| - let conn = req.db_conn()?; |
58 |
| - versions::table |
59 |
| - .find(id) |
60 |
| - .inner_join(crates::table) |
61 |
| - .select((versions::all_columns, crate::models::krate::ALL_COLUMNS)) |
62 |
| - .first(&*conn)? |
63 |
| - } |
64 |
| - }; |
| 41 | +/// Handles the `GET /versions/:version_id` route. |
| 42 | +/// The frontend doesn't appear to hit this endpoint. Instead, the version information appears to |
| 43 | +/// be returned by `krate::show`. |
| 44 | +pub fn show_by_id(req: &mut dyn Request) -> CargoResult<Response> { |
| 45 | + let id = &req.params()["version_id"]; |
| 46 | + let id = id.parse().unwrap_or(0); |
| 47 | + let conn = req.db_conn()?; |
| 48 | + let (version, krate): (Version, Crate) = versions::table |
| 49 | + .find(id) |
| 50 | + .inner_join(crates::table) |
| 51 | + .select((versions::all_columns, crate::models::krate::ALL_COLUMNS)) |
| 52 | + .first(&*conn)?; |
65 | 53 |
|
66 | 54 | #[derive(Serialize)]
|
67 | 55 | struct R {
|
|
0 commit comments