File tree Expand file tree Collapse file tree 1 file changed +19
-6
lines changed Expand file tree Collapse file tree 1 file changed +19
-6
lines changed Original file line number Diff line number Diff line change @@ -47,12 +47,9 @@ async fn version_and_crate(
4747 crate_name : & str ,
4848 semver : & str ,
4949) -> AppResult < ( Version , Crate ) > {
50- let ( krate, version) = Crate :: by_name ( crate_name)
51- . left_join (
52- versions:: table. on ( crates:: id
53- . eq ( versions:: crate_id)
54- . and ( versions:: num. eq ( semver) ) ) ,
55- )
50+ use ext:: * ;
51+
52+ let ( krate, version) = crate_and_version_query ( crate_name, semver)
5653 . select ( <( Crate , Option < Version > ) >:: as_select ( ) )
5754 . first ( conn)
5855 . await
@@ -68,3 +65,19 @@ fn deserialize_version<'de, D: Deserializer<'de>>(deserializer: D) -> Result<Str
6865 let _ = semver:: Version :: parse ( & s) . map_err ( Error :: custom) ?;
6966 Ok ( s)
7067}
68+
69+ mod ext {
70+ use super :: * ;
71+ use crates_io_diesel_helpers:: canon_crate_name;
72+
73+ #[ diesel:: dsl:: auto_type( ) ]
74+ pub fn crate_and_version_query < ' a > ( crate_name : & ' a str , semver : & ' a str ) -> _ {
75+ crates:: table
76+ . left_join (
77+ versions:: table. on ( crates:: id
78+ . eq ( versions:: crate_id)
79+ . and ( versions:: num. eq ( semver) ) ) ,
80+ )
81+ . filter ( canon_crate_name ( crates:: name) . eq ( canon_crate_name ( crate_name) ) )
82+ }
83+ }
You can’t perform that action at this time.
0 commit comments