diff --git a/.sqlx/query-e737c5ca6757d4de2d12c6b7582474ea72b7c01ef033bf28165a809ae2c73783.json b/.sqlx/query-4f5d9aec8003bdea17e014db46496b68dd0e9dd6a84132b930be8c557d1b886b.json similarity index 76% rename from .sqlx/query-e737c5ca6757d4de2d12c6b7582474ea72b7c01ef033bf28165a809ae2c73783.json rename to .sqlx/query-4f5d9aec8003bdea17e014db46496b68dd0e9dd6a84132b930be8c557d1b886b.json index 8183ad0ea..975143097 100644 --- a/.sqlx/query-e737c5ca6757d4de2d12c6b7582474ea72b7c01ef033bf28165a809ae2c73783.json +++ b/.sqlx/query-4f5d9aec8003bdea17e014db46496b68dd0e9dd6a84132b930be8c557d1b886b.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "SELECT\n crates.id AS \"crate_id: CrateId\",\n releases.id AS \"release_id: ReleaseId\",\n crates.name as \"name: KrateName\",\n releases.version,\n releases.description,\n releases.dependencies,\n releases.readme,\n releases.description_long,\n releases.release_time,\n release_build_status.build_status as \"build_status!: BuildStatus\",\n -- this is the latest build ID that generated content\n -- it's used to invalidate some blob storage related caches.\n builds.id as \"latest_build_id?: BuildId\",\n releases.rustdoc_status,\n releases.repository_url,\n releases.homepage_url,\n releases.have_examples,\n releases.target_name,\n repositories.host as \"repo_host?\",\n repositories.stars as \"repo_stars?\",\n repositories.forks as \"repo_forks?\",\n repositories.issues as \"repo_issues?\",\n repositories.name as \"repo_name?\",\n releases.is_library,\n releases.yanked,\n releases.doc_targets,\n releases.license,\n releases.documentation_url,\n releases.default_target,\n releases.source_size as \"source_size?: ByteSize\",\n builds.documentation_size as \"documentation_size?: ByteSize\",\n -- we're using the rustc version here to set the correct CSS file\n -- in the metadata.\n -- So we're only interested in successful builds here.\n builds.rustc_version as \"rustc_version?\",\n doc_coverage.total_items,\n doc_coverage.documented_items,\n doc_coverage.total_items_needing_examples,\n doc_coverage.items_with_examples\n FROM releases\n INNER JOIN release_build_status ON releases.id = release_build_status.rid\n INNER JOIN crates ON releases.crate_id = crates.id\n LEFT JOIN doc_coverage ON doc_coverage.release_id = releases.id\n LEFT JOIN repositories ON releases.repository_id = repositories.id\n LEFT JOIN LATERAL (\n SELECT rustc_version, documentation_size, id\n FROM builds\n WHERE\n builds.rid = releases.id AND\n builds.build_status = 'success'\n ORDER BY builds.build_finished\n DESC LIMIT 1\n ) AS builds ON true\n WHERE crates.name = $1 AND releases.version = $2;", + "query": "SELECT\n crates.id AS \"crate_id: CrateId\",\n releases.id AS \"release_id: ReleaseId\",\n crates.name as \"name: KrateName\",\n releases.version,\n releases.description,\n releases.dependencies,\n releases.description_long,\n releases.release_time,\n release_build_status.build_status as \"build_status!: BuildStatus\",\n -- this is the latest build ID that generated content\n -- it's used to invalidate some blob storage related caches.\n builds.id as \"latest_build_id?: BuildId\",\n releases.rustdoc_status,\n releases.repository_url,\n releases.homepage_url,\n releases.have_examples,\n releases.target_name,\n repositories.host as \"repo_host?\",\n repositories.stars as \"repo_stars?\",\n repositories.forks as \"repo_forks?\",\n repositories.issues as \"repo_issues?\",\n repositories.name as \"repo_name?\",\n releases.is_library,\n releases.yanked,\n releases.doc_targets,\n releases.license,\n releases.documentation_url,\n releases.default_target,\n releases.source_size as \"source_size?: ByteSize\",\n builds.documentation_size as \"documentation_size?: ByteSize\",\n -- we're using the rustc version here to set the correct CSS file\n -- in the metadata.\n -- So we're only interested in successful builds here.\n builds.rustc_version as \"rustc_version?\",\n doc_coverage.total_items,\n doc_coverage.documented_items,\n doc_coverage.total_items_needing_examples,\n doc_coverage.items_with_examples\n FROM releases\n INNER JOIN release_build_status ON releases.id = release_build_status.rid\n INNER JOIN crates ON releases.crate_id = crates.id\n LEFT JOIN doc_coverage ON doc_coverage.release_id = releases.id\n LEFT JOIN repositories ON releases.repository_id = repositories.id\n LEFT JOIN LATERAL (\n SELECT rustc_version, documentation_size, id\n FROM builds\n WHERE\n builds.rid = releases.id AND\n builds.build_status = 'success'\n ORDER BY builds.build_finished\n DESC LIMIT 1\n ) AS builds ON true\n WHERE crates.name = $1 AND releases.version = $2;", "describe": { "columns": [ { @@ -71,17 +71,6 @@ }, { "ordinal": 6, - "name": "readme", - "type_info": "Varchar", - "origin": { - "Table": { - "table": "releases", - "name": "readme" - } - } - }, - { - "ordinal": 7, "name": "description_long", "type_info": "Varchar", "origin": { @@ -92,7 +81,7 @@ } }, { - "ordinal": 8, + "ordinal": 7, "name": "release_time", "type_info": "Timestamptz", "origin": { @@ -103,7 +92,7 @@ } }, { - "ordinal": 9, + "ordinal": 8, "name": "build_status!: BuildStatus", "type_info": { "Custom": { @@ -126,7 +115,7 @@ } }, { - "ordinal": 10, + "ordinal": 9, "name": "latest_build_id?: BuildId", "type_info": "Int4", "origin": { @@ -137,7 +126,7 @@ } }, { - "ordinal": 11, + "ordinal": 10, "name": "rustdoc_status", "type_info": "Bool", "origin": { @@ -148,7 +137,7 @@ } }, { - "ordinal": 12, + "ordinal": 11, "name": "repository_url", "type_info": "Varchar", "origin": { @@ -159,7 +148,7 @@ } }, { - "ordinal": 13, + "ordinal": 12, "name": "homepage_url", "type_info": "Varchar", "origin": { @@ -170,7 +159,7 @@ } }, { - "ordinal": 14, + "ordinal": 13, "name": "have_examples", "type_info": "Bool", "origin": { @@ -181,7 +170,7 @@ } }, { - "ordinal": 15, + "ordinal": 14, "name": "target_name", "type_info": "Varchar", "origin": { @@ -192,7 +181,7 @@ } }, { - "ordinal": 16, + "ordinal": 15, "name": "repo_host?", "type_info": "Varchar", "origin": { @@ -203,7 +192,7 @@ } }, { - "ordinal": 17, + "ordinal": 16, "name": "repo_stars?", "type_info": "Int4", "origin": { @@ -214,7 +203,7 @@ } }, { - "ordinal": 18, + "ordinal": 17, "name": "repo_forks?", "type_info": "Int4", "origin": { @@ -225,7 +214,7 @@ } }, { - "ordinal": 19, + "ordinal": 18, "name": "repo_issues?", "type_info": "Int4", "origin": { @@ -236,7 +225,7 @@ } }, { - "ordinal": 20, + "ordinal": 19, "name": "repo_name?", "type_info": "Varchar", "origin": { @@ -247,7 +236,7 @@ } }, { - "ordinal": 21, + "ordinal": 20, "name": "is_library", "type_info": "Bool", "origin": { @@ -258,7 +247,7 @@ } }, { - "ordinal": 22, + "ordinal": 21, "name": "yanked", "type_info": "Bool", "origin": { @@ -269,7 +258,7 @@ } }, { - "ordinal": 23, + "ordinal": 22, "name": "doc_targets", "type_info": "Json", "origin": { @@ -280,7 +269,7 @@ } }, { - "ordinal": 24, + "ordinal": 23, "name": "license", "type_info": "Text", "origin": { @@ -291,7 +280,7 @@ } }, { - "ordinal": 25, + "ordinal": 24, "name": "documentation_url", "type_info": "Varchar", "origin": { @@ -302,7 +291,7 @@ } }, { - "ordinal": 26, + "ordinal": 25, "name": "default_target", "type_info": "Varchar", "origin": { @@ -313,7 +302,7 @@ } }, { - "ordinal": 27, + "ordinal": 26, "name": "source_size?: ByteSize", "type_info": "Int8", "origin": { @@ -324,7 +313,7 @@ } }, { - "ordinal": 28, + "ordinal": 27, "name": "documentation_size?: ByteSize", "type_info": "Int8", "origin": { @@ -335,7 +324,7 @@ } }, { - "ordinal": 29, + "ordinal": 28, "name": "rustc_version?", "type_info": "Varchar", "origin": { @@ -346,7 +335,7 @@ } }, { - "ordinal": 30, + "ordinal": 29, "name": "total_items", "type_info": "Int4", "origin": { @@ -357,7 +346,7 @@ } }, { - "ordinal": 31, + "ordinal": 30, "name": "documented_items", "type_info": "Int4", "origin": { @@ -368,7 +357,7 @@ } }, { - "ordinal": 32, + "ordinal": 31, "name": "total_items_needing_examples", "type_info": "Int4", "origin": { @@ -379,7 +368,7 @@ } }, { - "ordinal": 33, + "ordinal": 32, "name": "items_with_examples", "type_info": "Int4", "origin": { @@ -405,7 +394,6 @@ true, true, true, - true, false, true, true, @@ -433,5 +421,5 @@ true ] }, - "hash": "e737c5ca6757d4de2d12c6b7582474ea72b7c01ef033bf28165a809ae2c73783" + "hash": "4f5d9aec8003bdea17e014db46496b68dd0e9dd6a84132b930be8c557d1b886b" } diff --git a/.sqlx/query-807ff1976fbd24a6cdb5ac697650912affda4104e29140ce1d38220474ea2034.json b/.sqlx/query-6c32323c9e32bbebba1f450c2243a17ca847f699a38b7954ebd160a4bb40fa96.json similarity index 75% rename from .sqlx/query-807ff1976fbd24a6cdb5ac697650912affda4104e29140ce1d38220474ea2034.json rename to .sqlx/query-6c32323c9e32bbebba1f450c2243a17ca847f699a38b7954ebd160a4bb40fa96.json index 894979f3f..01db49ff6 100644 --- a/.sqlx/query-807ff1976fbd24a6cdb5ac697650912affda4104e29140ce1d38220474ea2034.json +++ b/.sqlx/query-6c32323c9e32bbebba1f450c2243a17ca847f699a38b7954ebd160a4bb40fa96.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "UPDATE releases\n SET release_time = $2,\n dependencies = $3,\n target_name = $4,\n yanked = $5,\n rustdoc_status = $6,\n test_status = $7,\n license = $8,\n repository_url = $9,\n homepage_url = $10,\n description = $11,\n description_long = $12,\n readme = $13,\n have_examples = $14,\n doc_targets = $15,\n is_library = $16,\n documentation_url = $17,\n default_target = $18,\n features = $19,\n repository_id = $20,\n source_size = $21\n WHERE id = $1", + "query": "UPDATE releases\n SET release_time = $2,\n dependencies = $3,\n target_name = $4,\n yanked = $5,\n rustdoc_status = $6,\n test_status = $7,\n license = $8,\n repository_url = $9,\n homepage_url = $10,\n description = $11,\n description_long = $12,\n have_examples = $13,\n doc_targets = $14,\n is_library = $15,\n documentation_url = $16,\n default_target = $17,\n features = $18,\n repository_id = $19,\n source_size = $20\n WHERE id = $1", "describe": { "columns": [], "parameters": { @@ -17,7 +17,6 @@ "Varchar", "Varchar", "Varchar", - "Varchar", "Bool", "Json", "Bool", @@ -53,5 +52,5 @@ }, "nullable": [] }, - "hash": "807ff1976fbd24a6cdb5ac697650912affda4104e29140ce1d38220474ea2034" + "hash": "6c32323c9e32bbebba1f450c2243a17ca847f699a38b7954ebd160a4bb40fa96" } diff --git a/crates/bin/docs_rs_web/src/handlers/crate_details.rs b/crates/bin/docs_rs_web/src/handlers/crate_details.rs index e3d886b87..65fb50814 100644 --- a/crates/bin/docs_rs_web/src/handlers/crate_details.rs +++ b/crates/bin/docs_rs_web/src/handlers/crate_details.rs @@ -110,7 +110,6 @@ impl CrateDetails { releases.version, releases.description, releases.dependencies, - releases.readme, releases.description_long, releases.release_time, release_build_status.build_status as "build_status!: BuildStatus", @@ -229,7 +228,7 @@ impl CrateDetails { description: krate.description, owners: Vec::new(), dependencies, - readme: krate.readme, + readme: None, rustdoc: krate.description_long, release_time: krate.release_time, build_status: krate.build_status, @@ -1914,23 +1913,6 @@ mod tests { #[test] fn readme() { async_wrapper(|env| async move { - env.fake_release() - .await - .name("dummy") - .version("0.1.0") - .readme_only_database("database readme") - .create() - .await?; - - env.fake_release() - .await - .name("dummy") - .version("0.2.0") - .readme_only_database("database readme") - .source_file("README.md", b"storage readme") - .create() - .await?; - env.fake_release() .await .name("dummy") @@ -1943,7 +1925,6 @@ mod tests { .await .name("dummy") .version("0.4.0") - .readme_only_database("database readme") .source_file("MEREAD", b"storage meread") .source_file("Cargo.toml", br#"package.readme = "MEREAD""#) .create() @@ -1953,7 +1934,6 @@ mod tests { .await .name("dummy") .version("0.5.0") - .readme_only_database("database readme") .source_file("README.md", b"storage readme") .no_cargo_toml() .create() @@ -1968,8 +1948,6 @@ mod tests { } }; - check_readme("/crate/dummy/0.1.0".into(), "database readme".into()).await; - check_readme("/crate/dummy/0.2.0".into(), "storage readme".into()).await; check_readme("/crate/dummy/0.3.0".into(), "storage readme".into()).await; check_readme("/crate/dummy/0.4.0".into(), "storage meread".into()).await; diff --git a/crates/lib/docs_rs_database/migrations/20261007052204_drop-releases-readme.down.sql b/crates/lib/docs_rs_database/migrations/20261007052204_drop-releases-readme.down.sql new file mode 100644 index 000000000..abdd4cf2b --- /dev/null +++ b/crates/lib/docs_rs_database/migrations/20261007052204_drop-releases-readme.down.sql @@ -0,0 +1,2 @@ +ALTER TABLE releases ADD COLUMN readme VARCHAR(51200); + diff --git a/crates/lib/docs_rs_database/migrations/20261007052204_drop-releases-readme.up.sql b/crates/lib/docs_rs_database/migrations/20261007052204_drop-releases-readme.up.sql new file mode 100644 index 000000000..8c46a4737 --- /dev/null +++ b/crates/lib/docs_rs_database/migrations/20261007052204_drop-releases-readme.up.sql @@ -0,0 +1 @@ +ALTER TABLE releases DROP COLUMN readme; diff --git a/crates/lib/docs_rs_database/src/releases.rs b/crates/lib/docs_rs_database/src/releases.rs index e34878175..ca1444047 100644 --- a/crates/lib/docs_rs_database/src/releases.rs +++ b/crates/lib/docs_rs_database/src/releases.rs @@ -43,7 +43,6 @@ pub async fn finish_release( .map(Into::into) .collect(); let rustdoc = get_rustdoc(metadata_pkg, source_dir).unwrap_or(None); - let readme = get_readme(metadata_pkg, source_dir).unwrap_or(None); let features = get_features(metadata_pkg); let is_library = metadata_pkg.is_library(); @@ -64,15 +63,14 @@ pub async fn finish_release( homepage_url = $10, description = $11, description_long = $12, - readme = $13, - have_examples = $14, - doc_targets = $15, - is_library = $16, - documentation_url = $17, - default_target = $18, - features = $19, - repository_id = $20, - source_size = $21 + have_examples = $13, + doc_targets = $14, + is_library = $15, + documentation_url = $16, + default_target = $17, + features = $18, + repository_id = $19, + source_size = $20 WHERE id = $1"#, release_id.0, registry_data.release_time, @@ -86,7 +84,6 @@ pub async fn finish_release( metadata_pkg.homepage, metadata_pkg.description, rustdoc, - readme, has_examples, serde_json::to_value(doc_targets)?, is_library, @@ -395,28 +392,6 @@ fn get_features(pkg: &MetadataPackage) -> Vec { features } -/// Reads readme if there is any read defined in Cargo.toml of a Package -fn get_readme(pkg: &MetadataPackage, source_dir: &Path) -> Result> { - let readme_path = source_dir.join(pkg.readme.as_deref().unwrap_or("README.md")); - - if !readme_path.exists() { - return Ok(None); - } - - let readme = fs::read_to_string(readme_path)?; - - if readme.is_empty() { - Ok(None) - } else if readme.len() > 51200 { - Ok(Some(format!( - "(Readme ignored due to being too long. ({} > 51200))", - readme.len() - ))) - } else { - Ok(Some(readme)) - } -} - fn get_rustdoc(pkg: &MetadataPackage, source_dir: &Path) -> Result> { if let Some(src_path) = &pkg.targets.first().and_then(|t| t.src_path.as_ref()) { let src_path = Path::new(src_path); diff --git a/crates/lib/docs_rs_test_fakes/src/legacy.rs b/crates/lib/docs_rs_test_fakes/src/legacy.rs index 200cee69c..a71310983 100644 --- a/crates/lib/docs_rs_test_fakes/src/legacy.rs +++ b/crates/lib/docs_rs_test_fakes/src/legacy.rs @@ -82,8 +82,6 @@ pub struct FakeRelease<'a> { registry_release_data: ReleaseData, has_docs: bool, has_examples: bool, - /// This stores the content, while `package.readme` stores the filename - readme: Option<&'a str>, github_stats: Option, github_stats_id: Option, doc_coverage: Option, @@ -148,7 +146,6 @@ impl<'a> FakeRelease<'a> { registry_release_data: ReleaseData::dummy(), has_docs: true, has_examples: false, - readme: None, github_stats: None, github_stats_id: None, doc_coverage: None, @@ -294,17 +291,10 @@ impl<'a> FakeRelease<'a> { } /// NOTE: this should be markdown. It will be rendered as HTML when served. - pub fn readme(mut self, content: &'a str) -> Self { - self.readme = Some(content); + pub fn readme(self, content: &'a str) -> Self { self.source_file("README.md", content.as_bytes()) } - /// NOTE: this should be markdown. It will be rendered as HTML when served. - pub fn readme_only_database(mut self, content: &'a str) -> Self { - self.readme = Some(content); - self - } - pub fn add_owner(mut self, owner: CrateOwner) -> Self { self.registry_crate_data.owners.push(owner); self @@ -498,9 +488,6 @@ impl<'a> FakeRelease<'a> { let crate_tmp = create_temp_dir(); let crate_dir = crate_tmp.path(); - if let Some(markdown) = self.readme { - fs::write(crate_dir.join("README.md"), markdown)?; - } store_files_into(&self.source_files, crate_dir)?; let default_target = self.default_target.unwrap_or("x86_64-unknown-linux-gnu");