Skip to content

Commit 6247ede

Browse files
committed
crate/update: Only update the trustpub_only value if it actually changed
1 parent 9366d5f commit 6247ede

10 files changed

+215
-111
lines changed

src/controllers/krate/update.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,9 @@ async fn update_inner(
105105
}
106106

107107
// Update trustpub_only if provided
108-
if let Some(trustpub_only) = body.trustpub_only {
108+
if let Some(trustpub_only) = body.trustpub_only
109+
&& trustpub_only != krate.trustpub_only
110+
{
109111
diesel::update(crates::table)
110112
.filter(crates::id.eq(krate.id))
111113
.set(crates::trustpub_only.eq(trustpub_only))

src/tests/routes/crates/snapshots/integration__routes__crates__update__disable_trustpub_only-7.snap renamed to src/tests/routes/crates/snapshots/integration__routes__crates__update__disable_trustpub_only-10.snap

File renamed without changes.

src/tests/routes/crates/snapshots/integration__routes__crates__update__disable_trustpub_only-3.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ expression: json
3030
"num_versions": 1,
3131
"recent_downloads": null,
3232
"repository": null,
33-
"trustpub_only": false,
33+
"trustpub_only": true,
3434
"updated_at": "[datetime]",
3535
"versions": null,
3636
"yanked": false

src/tests/routes/crates/snapshots/integration__routes__crates__update__disable_trustpub_only-6.snap

Lines changed: 8 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,9 @@ source: src/tests/routes/crates/update.rs
33
expression: json
44
---
55
{
6-
"categories": [],
76
"crate": {
87
"badges": [],
9-
"categories": [],
8+
"categories": null,
109
"created_at": "[datetime]",
1110
"default_version": "0.99.0",
1211
"description": null,
@@ -15,70 +14,25 @@ expression: json
1514
"exact_match": false,
1615
"homepage": null,
1716
"id": "foo",
18-
"keywords": [],
17+
"keywords": null,
1918
"links": {
2019
"owner_team": "/api/v1/crates/foo/owner_team",
2120
"owner_user": "/api/v1/crates/foo/owner_user",
2221
"owners": "/api/v1/crates/foo/owners",
2322
"reverse_dependencies": "/api/v1/crates/foo/reverse_dependencies",
2423
"version_downloads": "/api/v1/crates/foo/downloads",
25-
"versions": null
24+
"versions": "/api/v1/crates/foo/versions"
2625
},
27-
"max_stable_version": "0.99.0",
28-
"max_version": "0.99.0",
26+
"max_stable_version": null,
27+
"max_version": "0.0.0",
2928
"name": "foo",
30-
"newest_version": "0.99.0",
29+
"newest_version": "0.0.0",
3130
"num_versions": 1,
3231
"recent_downloads": null,
3332
"repository": null,
3433
"trustpub_only": false,
3534
"updated_at": "[datetime]",
36-
"versions": [
37-
1
38-
],
35+
"versions": null,
3936
"yanked": false
40-
},
41-
"keywords": [],
42-
"versions": [
43-
{
44-
"audit_actions": [],
45-
"bin_names": null,
46-
"checksum": " ",
47-
"crate": "foo",
48-
"crate_size": 0,
49-
"created_at": "[datetime]",
50-
"description": null,
51-
"dl_path": "/api/v1/crates/foo/0.99.0/download",
52-
"documentation": null,
53-
"downloads": 0,
54-
"edition": null,
55-
"features": {},
56-
"has_lib": null,
57-
"homepage": null,
58-
"id": 1,
59-
"lib_links": null,
60-
"license": null,
61-
"linecounts": null,
62-
"links": {
63-
"authors": "/api/v1/crates/foo/0.99.0/authors",
64-
"dependencies": "/api/v1/crates/foo/0.99.0/dependencies",
65-
"version_downloads": "/api/v1/crates/foo/0.99.0/downloads"
66-
},
67-
"num": "0.99.0",
68-
"published_by": {
69-
"avatar": null,
70-
"id": 1,
71-
"login": "foo",
72-
"name": null,
73-
"url": "https://github.com/foo"
74-
},
75-
"readme_path": "/api/v1/crates/foo/0.99.0/readme",
76-
"repository": null,
77-
"rust_version": null,
78-
"trustpub_data": null,
79-
"updated_at": "[datetime]",
80-
"yank_message": null,
81-
"yanked": false
82-
}
83-
]
37+
}
8438
}
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
---
2+
source: src/tests/routes/crates/update.rs
3+
expression: json
4+
---
5+
{
6+
"categories": [],
7+
"crate": {
8+
"badges": [],
9+
"categories": [],
10+
"created_at": "[datetime]",
11+
"default_version": "0.99.0",
12+
"description": null,
13+
"documentation": null,
14+
"downloads": 0,
15+
"exact_match": false,
16+
"homepage": null,
17+
"id": "foo",
18+
"keywords": [],
19+
"links": {
20+
"owner_team": "/api/v1/crates/foo/owner_team",
21+
"owner_user": "/api/v1/crates/foo/owner_user",
22+
"owners": "/api/v1/crates/foo/owners",
23+
"reverse_dependencies": "/api/v1/crates/foo/reverse_dependencies",
24+
"version_downloads": "/api/v1/crates/foo/downloads",
25+
"versions": null
26+
},
27+
"max_stable_version": "0.99.0",
28+
"max_version": "0.99.0",
29+
"name": "foo",
30+
"newest_version": "0.99.0",
31+
"num_versions": 1,
32+
"recent_downloads": null,
33+
"repository": null,
34+
"trustpub_only": false,
35+
"updated_at": "[datetime]",
36+
"versions": [
37+
1
38+
],
39+
"yanked": false
40+
},
41+
"keywords": [],
42+
"versions": [
43+
{
44+
"audit_actions": [],
45+
"bin_names": null,
46+
"checksum": " ",
47+
"crate": "foo",
48+
"crate_size": 0,
49+
"created_at": "[datetime]",
50+
"description": null,
51+
"dl_path": "/api/v1/crates/foo/0.99.0/download",
52+
"documentation": null,
53+
"downloads": 0,
54+
"edition": null,
55+
"features": {},
56+
"has_lib": null,
57+
"homepage": null,
58+
"id": 1,
59+
"lib_links": null,
60+
"license": null,
61+
"linecounts": null,
62+
"links": {
63+
"authors": "/api/v1/crates/foo/0.99.0/authors",
64+
"dependencies": "/api/v1/crates/foo/0.99.0/dependencies",
65+
"version_downloads": "/api/v1/crates/foo/0.99.0/downloads"
66+
},
67+
"num": "0.99.0",
68+
"published_by": {
69+
"avatar": null,
70+
"id": 1,
71+
"login": "foo",
72+
"name": null,
73+
"url": "https://github.com/foo"
74+
},
75+
"readme_path": "/api/v1/crates/foo/0.99.0/readme",
76+
"repository": null,
77+
"rust_version": null,
78+
"trustpub_data": null,
79+
"updated_at": "[datetime]",
80+
"yank_message": null,
81+
"yanked": false
82+
}
83+
]
84+
}

src/tests/routes/crates/snapshots/integration__routes__crates__update__enable_trustpub_only-7.snap renamed to src/tests/routes/crates/snapshots/integration__routes__crates__update__enable_trustpub_only-10.snap

File renamed without changes.

src/tests/routes/crates/snapshots/integration__routes__crates__update__enable_trustpub_only-3.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ expression: json
3030
"num_versions": 1,
3131
"recent_downloads": null,
3232
"repository": null,
33-
"trustpub_only": true,
33+
"trustpub_only": false,
3434
"updated_at": "[datetime]",
3535
"versions": null,
3636
"yanked": false

src/tests/routes/crates/snapshots/integration__routes__crates__update__enable_trustpub_only-6.snap

Lines changed: 8 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,9 @@ source: src/tests/routes/crates/update.rs
33
expression: json
44
---
55
{
6-
"categories": [],
76
"crate": {
87
"badges": [],
9-
"categories": [],
8+
"categories": null,
109
"created_at": "[datetime]",
1110
"default_version": "0.99.0",
1211
"description": null,
@@ -15,70 +14,25 @@ expression: json
1514
"exact_match": false,
1615
"homepage": null,
1716
"id": "foo",
18-
"keywords": [],
17+
"keywords": null,
1918
"links": {
2019
"owner_team": "/api/v1/crates/foo/owner_team",
2120
"owner_user": "/api/v1/crates/foo/owner_user",
2221
"owners": "/api/v1/crates/foo/owners",
2322
"reverse_dependencies": "/api/v1/crates/foo/reverse_dependencies",
2423
"version_downloads": "/api/v1/crates/foo/downloads",
25-
"versions": null
24+
"versions": "/api/v1/crates/foo/versions"
2625
},
27-
"max_stable_version": "0.99.0",
28-
"max_version": "0.99.0",
26+
"max_stable_version": null,
27+
"max_version": "0.0.0",
2928
"name": "foo",
30-
"newest_version": "0.99.0",
29+
"newest_version": "0.0.0",
3130
"num_versions": 1,
3231
"recent_downloads": null,
3332
"repository": null,
3433
"trustpub_only": true,
3534
"updated_at": "[datetime]",
36-
"versions": [
37-
1
38-
],
35+
"versions": null,
3936
"yanked": false
40-
},
41-
"keywords": [],
42-
"versions": [
43-
{
44-
"audit_actions": [],
45-
"bin_names": null,
46-
"checksum": " ",
47-
"crate": "foo",
48-
"crate_size": 0,
49-
"created_at": "[datetime]",
50-
"description": null,
51-
"dl_path": "/api/v1/crates/foo/0.99.0/download",
52-
"documentation": null,
53-
"downloads": 0,
54-
"edition": null,
55-
"features": {},
56-
"has_lib": null,
57-
"homepage": null,
58-
"id": 1,
59-
"lib_links": null,
60-
"license": null,
61-
"linecounts": null,
62-
"links": {
63-
"authors": "/api/v1/crates/foo/0.99.0/authors",
64-
"dependencies": "/api/v1/crates/foo/0.99.0/dependencies",
65-
"version_downloads": "/api/v1/crates/foo/0.99.0/downloads"
66-
},
67-
"num": "0.99.0",
68-
"published_by": {
69-
"avatar": null,
70-
"id": 1,
71-
"login": "foo",
72-
"name": null,
73-
"url": "https://github.com/foo"
74-
},
75-
"readme_path": "/api/v1/crates/foo/0.99.0/readme",
76-
"repository": null,
77-
"rust_version": null,
78-
"trustpub_data": null,
79-
"updated_at": "[datetime]",
80-
"yank_message": null,
81-
"yanked": false
82-
}
83-
]
37+
}
8438
}
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
---
2+
source: src/tests/routes/crates/update.rs
3+
expression: json
4+
---
5+
{
6+
"categories": [],
7+
"crate": {
8+
"badges": [],
9+
"categories": [],
10+
"created_at": "[datetime]",
11+
"default_version": "0.99.0",
12+
"description": null,
13+
"documentation": null,
14+
"downloads": 0,
15+
"exact_match": false,
16+
"homepage": null,
17+
"id": "foo",
18+
"keywords": [],
19+
"links": {
20+
"owner_team": "/api/v1/crates/foo/owner_team",
21+
"owner_user": "/api/v1/crates/foo/owner_user",
22+
"owners": "/api/v1/crates/foo/owners",
23+
"reverse_dependencies": "/api/v1/crates/foo/reverse_dependencies",
24+
"version_downloads": "/api/v1/crates/foo/downloads",
25+
"versions": null
26+
},
27+
"max_stable_version": "0.99.0",
28+
"max_version": "0.99.0",
29+
"name": "foo",
30+
"newest_version": "0.99.0",
31+
"num_versions": 1,
32+
"recent_downloads": null,
33+
"repository": null,
34+
"trustpub_only": true,
35+
"updated_at": "[datetime]",
36+
"versions": [
37+
1
38+
],
39+
"yanked": false
40+
},
41+
"keywords": [],
42+
"versions": [
43+
{
44+
"audit_actions": [],
45+
"bin_names": null,
46+
"checksum": " ",
47+
"crate": "foo",
48+
"crate_size": 0,
49+
"created_at": "[datetime]",
50+
"description": null,
51+
"dl_path": "/api/v1/crates/foo/0.99.0/download",
52+
"documentation": null,
53+
"downloads": 0,
54+
"edition": null,
55+
"features": {},
56+
"has_lib": null,
57+
"homepage": null,
58+
"id": 1,
59+
"lib_links": null,
60+
"license": null,
61+
"linecounts": null,
62+
"links": {
63+
"authors": "/api/v1/crates/foo/0.99.0/authors",
64+
"dependencies": "/api/v1/crates/foo/0.99.0/dependencies",
65+
"version_downloads": "/api/v1/crates/foo/0.99.0/downloads"
66+
},
67+
"num": "0.99.0",
68+
"published_by": {
69+
"avatar": null,
70+
"id": 1,
71+
"login": "foo",
72+
"name": null,
73+
"url": "https://github.com/foo"
74+
},
75+
"readme_path": "/api/v1/crates/foo/0.99.0/readme",
76+
"repository": null,
77+
"rust_version": null,
78+
"trustpub_data": null,
79+
"updated_at": "[datetime]",
80+
"yank_message": null,
81+
"yanked": false
82+
}
83+
]
84+
}

0 commit comments

Comments
 (0)