1
1
SELECT
2
- dependencies.* , crate_downloads, crate_name, total
2
+ dependencies.* , crate_downloads, crate_name
3
3
FROM (
4
- -- Apply pagination to the crates
5
- SELECT * , COUNT (* ) OVER () as total FROM (
6
- SELECT
7
- crate_downloads .downloads AS crate_downloads,
8
- crates .name AS crate_name,
9
- versions .id AS version_id
10
- FROM
11
- -- We only want the crates whose *max* version is dependent, so we join on a
12
- -- subselect that includes the versions with their ordinal position
13
- (
14
- SELECT DISTINCT ON (crate_id)
15
- crate_id, semver_no_prerelease, id
4
+ SELECT
5
+ crate_downloads .downloads AS crate_downloads,
6
+ crates .name AS crate_name,
7
+ version_id
8
+ FROM default_versions
9
+ INNER JOIN crates
10
+ ON crates .id = default_versions .crate_id
11
+ INNER JOIN crate_downloads using (crate_id)
12
+ WHERE version_id IN (SELECT version_id FROM dependencies WHERE crate_id = $1 )
13
+ AND NOT EXISTS (
14
+ SELECT 1
16
15
FROM versions
17
- WHERE NOT yanked
18
- ORDER BY
19
- crate_id,
20
- semver_no_prerelease DESC NULLS LAST,
21
- id DESC
22
- ) versions
23
- INNER JOIN crates
24
- ON crates .id = versions .crate_id
25
- INNER JOIN crate_downloads
26
- ON crate_downloads .crate_id = crates .id
27
- WHERE versions .id IN (SELECT version_id FROM dependencies WHERE crate_id = $1 )
28
- ) c
29
- ORDER BY
30
- crate_downloads DESC ,
31
- crate_name ASC
16
+ WHERE id = version_id and yanked
17
+ )
32
18
) crates
33
19
-- Multiple dependencies can exist, we only want first one
34
20
CROSS JOIN LATERAL (
@@ -38,5 +24,8 @@ CROSS JOIN LATERAL (
38
24
ORDER BY id ASC
39
25
LIMIT 1
40
26
) dependencies
27
+ ORDER BY
28
+ crate_downloads DESC ,
29
+ crate_name ASC
41
30
OFFSET $2
42
31
LIMIT $3
0 commit comments