Skip to content

Commit 74ddcf2

Browse files
authored
Merge pull request #10078 from Turbo87/per-version-cats-and-keys
database: Add `categories` and `keywords` columns to the `versions` table
2 parents 67354ac + bfc120d commit 74ddcf2

File tree

8 files changed

+21
-2
lines changed

8 files changed

+21
-2
lines changed

crates/crates_io_database/src/schema.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1021,6 +1021,10 @@ diesel::table! {
10211021
documentation -> Nullable<Text>,
10221022
/// Value of the `repository` field in the `Cargo.toml` file of this version.
10231023
repository -> Nullable<Text>,
1024+
/// The list of `categories` in the `Cargo.toml` file of this version.
1025+
categories -> Array<Nullable<Text>>,
1026+
/// The list of `keywords` in the `Cargo.toml` file of this version.
1027+
keywords -> Array<Nullable<Text>>,
10241028
}
10251029
}
10261030

crates/crates_io_database_dump/src/dump-db.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,8 @@ description = "public"
251251
homepage = "public"
252252
documentation = "public"
253253
repository = "public"
254+
categories = "public"
255+
keywords = "public"
254256

255257
[versions_published_by.columns]
256258
version_id = "private"

crates/crates_io_database_dump/src/snapshots/[email protected]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ BEGIN ISOLATION LEVEL REPEATABLE READ, READ ONLY;
1818
\copy "crates_keywords" ("crate_id", "keyword_id") TO 'data/crates_keywords.csv' WITH CSV HEADER
1919
\copy (SELECT "crate_id", "created_at", "created_by", "owner_id", "owner_kind" FROM "crate_owners" WHERE NOT deleted) TO 'data/crate_owners.csv' WITH CSV HEADER
2020

21-
\copy "versions" ("bin_names", "checksum", "crate_id", "crate_size", "created_at", "description", "documentation", "downloads", "edition", "features", "has_lib", "homepage", "id", "license", "links", "num", "published_by", "repository", "rust_version", "updated_at", "yanked") TO 'data/versions.csv' WITH CSV HEADER
21+
\copy "versions" ("bin_names", "categories", "checksum", "crate_id", "crate_size", "created_at", "description", "documentation", "downloads", "edition", "features", "has_lib", "homepage", "id", "keywords", "license", "links", "num", "published_by", "repository", "rust_version", "updated_at", "yanked") TO 'data/versions.csv' WITH CSV HEADER
2222
\copy "default_versions" ("crate_id", "version_id") TO 'data/default_versions.csv' WITH CSV HEADER
2323
\copy "dependencies" ("crate_id", "default_features", "explicit_name", "features", "id", "kind", "optional", "req", "target", "version_id") TO 'data/dependencies.csv' WITH CSV HEADER
2424
\copy "version_downloads" ("date", "downloads", "version_id") TO 'data/version_downloads.csv' WITH CSV HEADER

crates/crates_io_database_dump/src/snapshots/[email protected]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ BEGIN;
6060
\copy "crates_categories" ("category_id", "crate_id") FROM 'data/crates_categories.csv' WITH CSV HEADER
6161
\copy "crates_keywords" ("crate_id", "keyword_id") FROM 'data/crates_keywords.csv' WITH CSV HEADER
6262
\copy "crate_owners" ("crate_id", "created_at", "created_by", "owner_id", "owner_kind") FROM 'data/crate_owners.csv' WITH CSV HEADER
63-
\copy "versions" ("bin_names", "checksum", "crate_id", "crate_size", "created_at", "description", "documentation", "downloads", "edition", "features", "has_lib", "homepage", "id", "license", "links", "num", "published_by", "repository", "rust_version", "updated_at", "yanked") FROM 'data/versions.csv' WITH CSV HEADER
63+
\copy "versions" ("bin_names", "categories", "checksum", "crate_id", "crate_size", "created_at", "description", "documentation", "downloads", "edition", "features", "has_lib", "homepage", "id", "keywords", "license", "links", "num", "published_by", "repository", "rust_version", "updated_at", "yanked") FROM 'data/versions.csv' WITH CSV HEADER
6464
\copy "default_versions" ("crate_id", "version_id") FROM 'data/default_versions.csv' WITH CSV HEADER
6565
\copy "dependencies" ("crate_id", "default_features", "explicit_name", "features", "id", "kind", "optional", "req", "target", "version_id") FROM 'data/dependencies.csv' WITH CSV HEADER
6666
\copy "version_downloads" ("date", "downloads", "version_id") FROM 'data/version_downloads.csv' WITH CSV HEADER
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
alter table versions
2+
drop column categories,
3+
drop column keywords;
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
alter table versions
2+
add column categories text[] default array[]::text[] not null,
3+
add column keywords text[] default array[]::text[] not null;
4+
5+
comment on column versions.categories is 'The list of `categories` in the `Cargo.toml` file of this version.';
6+
comment on column versions.keywords is 'The list of `keywords` in the `Cargo.toml` file of this version.';

src/controllers/krate/publish.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,8 @@ pub async fn publish(app: AppState, req: BytesRequest) -> AppResult<Json<GoodCra
394394
.maybe_homepage(homepage.as_deref())
395395
.maybe_documentation(documentation.as_deref())
396396
.maybe_repository(repository.as_deref())
397+
.categories(&categories)
398+
.keywords(&keywords)
397399
.build();
398400

399401
let version = new_version.save(conn, &verified_email_address).await.map_err(|error| {

src/models/version.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,8 @@ pub struct NewVersion<'a> {
102102
homepage: Option<&'a str>,
103103
documentation: Option<&'a str>,
104104
repository: Option<&'a str>,
105+
categories: Option<&'a [&'a str]>,
106+
keywords: Option<&'a [&'a str]>,
105107
}
106108

107109
impl NewVersion<'_> {

0 commit comments

Comments
 (0)