Skip to content

Commit 38d6f48

Browse files
KixironJoshua Nelson
authored and
Joshua Nelson
committed
Dedup yourself
1 parent 1cfafc3 commit 38d6f48

File tree

2 files changed

+57
-57
lines changed

2 files changed

+57
-57
lines changed

src/web/releases.rs

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -164,21 +164,22 @@ fn get_releases_by_author(
164164
) -> (String, Vec<Release>) {
165165
let offset = (page - 1) * limit;
166166

167-
let query = "SELECT crates.name,
168-
releases.version,
169-
releases.description,
170-
releases.target_name,
171-
releases.release_time,
172-
releases.rustdoc_status,
173-
crates.github_stars,
174-
authors.name
175-
FROM crates
176-
INNER JOIN releases ON releases.id = crates.latest_version_id
177-
INNER JOIN author_rels ON releases.id = author_rels.rid
178-
INNER JOIN authors ON authors.id = author_rels.aid
179-
WHERE authors.slug = $1
180-
ORDER BY crates.github_stars DESC
181-
LIMIT $2 OFFSET $3";
167+
let query = "
168+
SELECT crates.name,
169+
releases.version,
170+
releases.description,
171+
releases.target_name,
172+
releases.release_time,
173+
releases.rustdoc_status,
174+
crates.github_stars,
175+
authors.name
176+
FROM crates
177+
INNER JOIN releases ON releases.id = crates.latest_version_id
178+
INNER JOIN author_rels ON releases.id = author_rels.rid
179+
INNER JOIN authors ON authors.id = author_rels.aid
180+
WHERE authors.slug = $1
181+
ORDER BY crates.github_stars DESC
182+
LIMIT $2 OFFSET $3";
182183
let query = conn.query(&query, &[&author, &limit, &offset]).unwrap();
183184

184185
let mut author_name = None;
@@ -537,13 +538,13 @@ pub fn search_handler(req: &mut Request) -> IronResult<Response> {
537538
if query.is_empty() {
538539
let rows = ctry!(conn.query(
539540
"SELECT crates.name,
540-
releases.version,
541-
releases.target_name
542-
FROM crates
543-
INNER JOIN releases
544-
ON crates.latest_version_id = releases.id
545-
WHERE github_stars >= 100 AND rustdoc_status = true
546-
OFFSET FLOOR(RANDOM() * 280) LIMIT 1",
541+
releases.version,
542+
releases.target_name
543+
FROM crates
544+
INNER JOIN releases
545+
ON crates.latest_version_id = releases.id
546+
WHERE github_stars >= 100 AND rustdoc_status = true
547+
OFFSET FLOOR(RANDOM() * 280) LIMIT 1",
547548
&[]
548549
));
549550
// ~~~~~~^
@@ -645,9 +646,9 @@ pub fn build_queue_handler(req: &mut Request) -> IronResult<Response> {
645646
let query = conn
646647
.query(
647648
"SELECT name, version, priority
648-
FROM queue
649-
WHERE attempt < 5
650-
ORDER BY priority ASC, attempt ASC, id ASC",
649+
FROM queue
650+
WHERE attempt < 5
651+
ORDER BY priority ASC, attempt ASC, id ASC",
651652
&[],
652653
)
653654
.unwrap();

src/web/source.rs

Lines changed: 31 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,8 @@ impl FileList {
104104

105105
let files: Value = rows.get(0).get_opt(5).unwrap().ok()?;
106106

107-
let mut file_list: Vec<File> = if let Some(files) = files.as_array() {
108-
let mut file_list = files
107+
if let Some(files) = files.as_array() {
108+
let mut file_list: Vec<File> = files
109109
.iter()
110110
.filter_map(|file| {
111111
if let Some(file) = file.as_array() {
@@ -139,7 +139,6 @@ impl FileList {
139139
file_type: ftype,
140140
};
141141

142-
// avoid adding duplicates, a directory may occur more than once
143142
return Some(file);
144143
}
145144
}
@@ -148,38 +147,38 @@ impl FileList {
148147
})
149148
.collect::<Vec<_>>();
150149

150+
if file_list.is_empty() {
151+
return None;
152+
}
153+
154+
file_list.sort_by(|a, b| {
155+
// directories must be listed first
156+
if a.file_type == FileType::Dir && b.file_type != FileType::Dir {
157+
Ordering::Less
158+
} else if a.file_type != FileType::Dir && b.file_type == FileType::Dir {
159+
Ordering::Greater
160+
} else {
161+
a.name.to_lowercase().cmp(&b.name.to_lowercase())
162+
}
163+
});
164+
165+
// avoid adding duplicates, a directory may occur more than once
151166
file_list.dedup();
152-
file_list
153-
} else {
154-
Vec::new()
155-
};
156167

157-
if file_list.is_empty() {
158-
return None;
168+
Some(FileList {
169+
metadata: MetaData {
170+
name: rows.get(0).get(0),
171+
version: rows.get(0).get(1),
172+
description: rows.get(0).get(2),
173+
target_name: rows.get(0).get(3),
174+
rustdoc_status: rows.get(0).get(4),
175+
default_target: rows.get(0).get(6),
176+
},
177+
files: file_list,
178+
})
179+
} else {
180+
None
159181
}
160-
161-
file_list.sort_by(|a, b| {
162-
// directories must be listed first
163-
if a.file_type == FileType::Dir && b.file_type != FileType::Dir {
164-
Ordering::Less
165-
} else if a.file_type != FileType::Dir && b.file_type == FileType::Dir {
166-
Ordering::Greater
167-
} else {
168-
a.name.to_lowercase().cmp(&b.name.to_lowercase())
169-
}
170-
});
171-
172-
Some(FileList {
173-
metadata: MetaData {
174-
name: rows.get(0).get(0),
175-
version: rows.get(0).get(1),
176-
description: rows.get(0).get(2),
177-
target_name: rows.get(0).get(3),
178-
rustdoc_status: rows.get(0).get(4),
179-
default_target: rows.get(0).get(6),
180-
},
181-
files: file_list,
182-
})
183182
}
184183
}
185184

0 commit comments

Comments
 (0)