Skip to content

Commit c05b2ea

Browse files
Merge pull request #755 from sgrif/sg-port-crate-versions
Port `crate/versions` over to use Diesel
2 parents c17f035 + d4a8337 commit c05b2ea

File tree

2 files changed

+18
-13
lines changed

2 files changed

+18
-13
lines changed

src/krate.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1399,9 +1399,10 @@ pub fn following(req: &mut Request) -> CargoResult<Response> {
13991399
// this information already, but ember is definitely requesting it
14001400
pub fn versions(req: &mut Request) -> CargoResult<Response> {
14011401
let crate_name = &req.params()["crate_id"];
1402-
let tx = req.tx()?;
1403-
let krate = Crate::find_by_name(tx, crate_name)?;
1404-
let versions = krate.versions(tx)?;
1402+
let conn = req.db_conn()?;
1403+
let krate = Crate::by_name(crate_name).first::<Crate>(&*conn)?;
1404+
let mut versions = Version::belonging_to(&krate).load::<Version>(&*conn)?;
1405+
versions.sort_by(|a, b| b.num.cmp(&a.num));
14051406
let versions = versions
14061407
.into_iter()
14071408
.map(|v| v.encodable(crate_name))

src/tests/krate.rs

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -410,16 +410,20 @@ fn show() {
410410
fn versions() {
411411
let (_b, app, middle) = ::app();
412412

413-
let v100 = semver::Version::parse("1.0.0").unwrap();
414-
let v050 = semver::Version::parse("0.5.0").unwrap();
415-
let v051 = semver::Version::parse("0.5.1").unwrap();
416-
417-
let mut req = ::req(app, Method::Get, "/api/v1/crates/foo_versions/versions");
418-
::mock_user(&mut req, ::user("foo"));
419-
420-
::mock_crate_vers(&mut req, ::krate("foo_versions"), &v051);
421-
::mock_crate_vers(&mut req, ::krate("foo_versions"), &v100);
422-
::mock_crate_vers(&mut req, ::krate("foo_versions"), &v050);
413+
let mut req = ::req(
414+
app.clone(),
415+
Method::Get,
416+
"/api/v1/crates/foo_versions/versions",
417+
);
418+
{
419+
let conn = app.diesel_database.get().unwrap();
420+
let u = ::new_user("foo").create_or_update(&conn).unwrap();
421+
::CrateBuilder::new("foo_versions", u.id)
422+
.version("0.5.1")
423+
.version("1.0.0")
424+
.version("0.5.0")
425+
.expect_build(&conn);
426+
}
423427

424428
let mut response = ok_resp!(middle.call(&mut req));
425429
let json: VersionsList = ::json(&mut response);

0 commit comments

Comments
 (0)