From 64b2aa0464e0677e44fc79b71ad0395e443c3dea Mon Sep 17 00:00:00 2001 From: Denis Cornehl Date: Wed, 11 Feb 2026 02:47:42 +0100 Subject: [PATCH] store rustwide command-error in build-table --- ...2965768044997d7806bc7d61a858307cd947.json} | 5 +- ...d79b9dd72f6b389dadca630745928612fa725.json | 5 +- ...39b79ab4ea2ff504cf2319324403b979365e1.json | 5 +- ...caffd9f0ee426e02cb3512df288434e40029f.json | 10 ++- ...90b53abd0867ebbd6ed2fe109984b1960c6d4.json | 10 ++- Cargo.lock | 1 + ...2965768044997d7806bc7d61a858307cd947.json} | 5 +- ...39b79ab4ea2ff504cf2319324403b979365e1.json | 5 +- ...0b53abd0867ebbd6ed2fe109984b1960c6d4.json} | 10 ++- ...2965768044997d7806bc7d61a858307cd947.json} | 5 +- ...d79b9dd72f6b389dadca630745928612fa725.json | 5 +- ...9b79ab4ea2ff504cf2319324403b979365e1.json} | 5 +- ...2965768044997d7806bc7d61a858307cd947.json} | 5 +- ...79b9dd72f6b389dadca630745928612fa725.json} | 5 +- ...9b79ab4ea2ff504cf2319324403b979365e1.json} | 5 +- ...caffd9f0ee426e02cb3512df288434e40029f.json | 10 ++- crates/bin/docs_rs_builder/Cargo.toml | 1 + .../src/docbuilder/build_error.rs | 42 ++++++++++ .../bin/docs_rs_builder/src/docbuilder/mod.rs | 1 + .../src/docbuilder/rustwide_builder.rs | 70 ++++++++++------ ...4edaffcf58f68237f572e1c14801dc41fba3a.json | 40 --------- ...c2965768044997d7806bc7d61a858307cd947.json | 41 +++++++++ ...39b79ab4ea2ff504cf2319324403b979365e1.json | 36 ++++++++ ...fa2497eba27fcee660f3d92241eaeda02ac0f.json | 35 -------- .../bin/docs_rs_import_release/src/import.rs | 13 ++- ...4edaffcf58f68237f572e1c14801dc41fba3a.json | 40 --------- ...c2965768044997d7806bc7d61a858307cd947.json | 41 +++++++++ ...79b9dd72f6b389dadca630745928612fa725.json} | 5 +- ...39b79ab4ea2ff504cf2319324403b979365e1.json | 36 ++++++++ ...fa2497eba27fcee660f3d92241eaeda02ac0f.json | 35 -------- crates/bin/docs_rs_watcher/src/db/delete.rs | 20 +++-- ...4edaffcf58f68237f572e1c14801dc41fba3a.json | 40 --------- ...c2965768044997d7806bc7d61a858307cd947.json | 41 +++++++++ ...d79b9dd72f6b389dadca630745928612fa725.json | 16 ++++ ...c9973a3f45abc9cf73e171011a2ded4d97dfc.json | 15 ---- ...39b79ab4ea2ff504cf2319324403b979365e1.json | 36 ++++++++ ...90b53abd0867ebbd6ed2fe109984b1960c6d4.json | 10 ++- ...fa2497eba27fcee660f3d92241eaeda02ac0f.json | 35 -------- .../docs_rs_web/src/handlers/build_details.rs | 15 +++- crates/bin/docs_rs_web/src/handlers/builds.rs | 10 ++- .../docs_rs_web/src/handlers/crate_details.rs | 18 +++- .../bin/docs_rs_web/src/handlers/releases.rs | 6 +- .../templates/crate/build_details.html | 15 ++++ ...4edaffcf58f68237f572e1c14801dc41fba3a.json | 40 --------- ...c2965768044997d7806bc7d61a858307cd947.json | 41 +++++++++ ...39b79ab4ea2ff504cf2319324403b979365e1.json | 36 ++++++++ ...fa2497eba27fcee660f3d92241eaeda02ac0f.json | 35 -------- ...4edaffcf58f68237f572e1c14801dc41fba3a.json | 40 --------- ...c2965768044997d7806bc7d61a858307cd947.json | 41 +++++++++ ...d79b9dd72f6b389dadca630745928612fa725.json | 16 ++++ ...c9973a3f45abc9cf73e171011a2ded4d97dfc.json | 15 ---- ...39b79ab4ea2ff504cf2319324403b979365e1.json | 36 ++++++++ ...fa2497eba27fcee660f3d92241eaeda02ac0f.json | 35 -------- ...4edaffcf58f68237f572e1c14801dc41fba3a.json | 40 --------- ...c2965768044997d7806bc7d61a858307cd947.json | 41 +++++++++ ...d79b9dd72f6b389dadca630745928612fa725.json | 16 ++++ ...c9973a3f45abc9cf73e171011a2ded4d97dfc.json | 15 ---- ...39b79ab4ea2ff504cf2319324403b979365e1.json | 36 ++++++++ ...fa2497eba27fcee660f3d92241eaeda02ac0f.json | 35 -------- ...4edaffcf58f68237f572e1c14801dc41fba3a.json | 40 --------- ...21a560ce522b241a0c3a66d203711fa6af30.json} | 10 ++- ...c2965768044997d7806bc7d61a858307cd947.json | 41 +++++++++ ...39b79ab4ea2ff504cf2319324403b979365e1.json | 36 ++++++++ ...9ef8eb67338b3e0e24818868a20684eb26bb.json} | 16 +++- ...adbaeb6b40280c43aaff3911e4950e326baa.json} | 10 ++- ...fa2497eba27fcee660f3d92241eaeda02ac0f.json | 35 -------- ...91504e8a1bef45551a2645801b28957e656f.json} | 8 +- .../20260211013415_builds-error-kind.down.sql | 2 + .../20260211013415_builds-error-kind.up.sql | 2 + crates/lib/docs_rs_database/src/releases.rs | 83 ++++++++++++------- ...4edaffcf58f68237f572e1c14801dc41fba3a.json | 40 --------- ...c2965768044997d7806bc7d61a858307cd947.json | 41 +++++++++ ...d79b9dd72f6b389dadca630745928612fa725.json | 16 ++++ ...c9973a3f45abc9cf73e171011a2ded4d97dfc.json | 15 ---- ...39b79ab4ea2ff504cf2319324403b979365e1.json | 36 ++++++++ ...fa2497eba27fcee660f3d92241eaeda02ac0f.json | 35 -------- ...4edaffcf58f68237f572e1c14801dc41fba3a.json | 40 --------- ...c2965768044997d7806bc7d61a858307cd947.json | 41 +++++++++ ...d79b9dd72f6b389dadca630745928612fa725.json | 16 ++++ ...c9973a3f45abc9cf73e171011a2ded4d97dfc.json | 15 ---- ...39b79ab4ea2ff504cf2319324403b979365e1.json | 36 ++++++++ ...fa2497eba27fcee660f3d92241eaeda02ac0f.json | 35 -------- crates/lib/docs_rs_test_fakes/src/legacy.rs | 17 ++-- crates/lib/docs_rs_types/src/build_error.rs | 29 +++++++ crates/lib/docs_rs_types/src/lib.rs | 2 + 85 files changed, 1149 insertions(+), 875 deletions(-) rename .sqlx/{query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json => query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json} (76%) rename crates/bin/docs_rs_builder/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json => .sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json (55%) rename crates/bin/docs_rs_admin/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json => .sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json (72%) rename crates/bin/docs_rs_builder/.sqlx/query-bac0eba6715837501751d9a9ff9e69da199e85e57254cbf571608b36cb865d36.json => .sqlx/query-99961669a88e08e3803172d1755caffd9f0ee426e02cb3512df288434e40029f.json (66%) rename crates/bin/cratesfyi/.sqlx/query-a2c5c46a3e0058c3bd23d62f1844e3ca5d6b118da33795449e9386525eea912f.json => .sqlx/query-9cc5a9e57ba5da30aea23342ea590b53abd0867ebbd6ed2fe109984b1960c6d4.json (73%) rename crates/bin/{docs_rs_admin/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json => cratesfyi/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json} (76%) rename .sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json => crates/bin/cratesfyi/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json (72%) rename crates/bin/{docs_rs_web/.sqlx/query-a2c5c46a3e0058c3bd23d62f1844e3ca5d6b118da33795449e9386525eea912f.json => cratesfyi/.sqlx/query-9cc5a9e57ba5da30aea23342ea590b53abd0867ebbd6ed2fe109984b1960c6d4.json} (73%) rename crates/bin/{cratesfyi/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json => docs_rs_admin/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json} (76%) rename .sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json => crates/bin/docs_rs_admin/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json (55%) rename crates/bin/{docs_rs_builder/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json => docs_rs_admin/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json} (72%) rename crates/bin/docs_rs_builder/.sqlx/{query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json => query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json} (76%) rename crates/bin/{docs_rs_watcher/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json => docs_rs_builder/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json} (55%) rename crates/bin/{cratesfyi/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json => docs_rs_builder/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json} (72%) rename .sqlx/query-bac0eba6715837501751d9a9ff9e69da199e85e57254cbf571608b36cb865d36.json => crates/bin/docs_rs_builder/.sqlx/query-99961669a88e08e3803172d1755caffd9f0ee426e02cb3512df288434e40029f.json (66%) create mode 100644 crates/bin/docs_rs_builder/src/docbuilder/build_error.rs delete mode 100644 crates/bin/docs_rs_import_release/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json create mode 100644 crates/bin/docs_rs_import_release/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json create mode 100644 crates/bin/docs_rs_import_release/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json delete mode 100644 crates/bin/docs_rs_import_release/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json delete mode 100644 crates/bin/docs_rs_watcher/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json create mode 100644 crates/bin/docs_rs_watcher/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json rename crates/bin/{docs_rs_admin/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json => docs_rs_watcher/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json} (55%) create mode 100644 crates/bin/docs_rs_watcher/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json delete mode 100644 crates/bin/docs_rs_watcher/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json delete mode 100644 crates/bin/docs_rs_web/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json create mode 100644 crates/bin/docs_rs_web/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json create mode 100644 crates/bin/docs_rs_web/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json delete mode 100644 crates/bin/docs_rs_web/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json create mode 100644 crates/bin/docs_rs_web/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json rename .sqlx/query-a2c5c46a3e0058c3bd23d62f1844e3ca5d6b118da33795449e9386525eea912f.json => crates/bin/docs_rs_web/.sqlx/query-9cc5a9e57ba5da30aea23342ea590b53abd0867ebbd6ed2fe109984b1960c6d4.json (73%) delete mode 100644 crates/bin/docs_rs_web/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json delete mode 100644 crates/lib/docs_rs_build_limits/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json create mode 100644 crates/lib/docs_rs_build_limits/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json create mode 100644 crates/lib/docs_rs_build_limits/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json delete mode 100644 crates/lib/docs_rs_build_limits/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json delete mode 100644 crates/lib/docs_rs_build_queue/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json create mode 100644 crates/lib/docs_rs_build_queue/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json create mode 100644 crates/lib/docs_rs_build_queue/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json delete mode 100644 crates/lib/docs_rs_build_queue/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json create mode 100644 crates/lib/docs_rs_build_queue/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json delete mode 100644 crates/lib/docs_rs_build_queue/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json delete mode 100644 crates/lib/docs_rs_context/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json create mode 100644 crates/lib/docs_rs_context/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json create mode 100644 crates/lib/docs_rs_context/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json delete mode 100644 crates/lib/docs_rs_context/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json create mode 100644 crates/lib/docs_rs_context/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json delete mode 100644 crates/lib/docs_rs_context/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json delete mode 100644 crates/lib/docs_rs_database/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json rename crates/lib/docs_rs_database/.sqlx/{query-8552f463bfc719f100e0e678b1400ea593a24d5d0c9ef291f786a27669cd626d.json => query-587beee6aca99144cce9aec29b3321a560ce522b241a0c3a66d203711fa6af30.json} (80%) create mode 100644 crates/lib/docs_rs_database/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json create mode 100644 crates/lib/docs_rs_database/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json rename crates/lib/docs_rs_database/.sqlx/{query-0da90d737b6bf2c1c1b0ab6b14c73c8363125578b1d6e30a99e70aa6bf7842c2.json => query-820a877a5fd6426b8429668d95dd9ef8eb67338b3e0e24818868a20684eb26bb.json} (72%) rename crates/lib/docs_rs_database/.sqlx/{query-c955871bcda914feac9cfb23fe010399c0b3f75e92ac425fa4ec337e9b250c26.json => query-b03260d3baa15f399748d0925cd6adbaeb6b40280c43aaff3911e4950e326baa.json} (75%) delete mode 100644 crates/lib/docs_rs_database/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json rename crates/lib/docs_rs_database/.sqlx/{query-64d91ec806ed67d6cffd1a797da5059cc8fb44b37f94dc77877c88d266c5ac9b.json => query-d74ff0da3d5e0a0be4bb5dc4bfd891504e8a1bef45551a2645801b28957e656f.json} (82%) create mode 100644 crates/lib/docs_rs_database/migrations/20260211013415_builds-error-kind.down.sql create mode 100644 crates/lib/docs_rs_database/migrations/20260211013415_builds-error-kind.up.sql delete mode 100644 crates/lib/docs_rs_repository_stats/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json create mode 100644 crates/lib/docs_rs_repository_stats/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json create mode 100644 crates/lib/docs_rs_repository_stats/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json delete mode 100644 crates/lib/docs_rs_repository_stats/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json create mode 100644 crates/lib/docs_rs_repository_stats/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json delete mode 100644 crates/lib/docs_rs_repository_stats/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json delete mode 100644 crates/lib/docs_rs_test_fakes/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json create mode 100644 crates/lib/docs_rs_test_fakes/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json create mode 100644 crates/lib/docs_rs_test_fakes/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json delete mode 100644 crates/lib/docs_rs_test_fakes/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json create mode 100644 crates/lib/docs_rs_test_fakes/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json delete mode 100644 crates/lib/docs_rs_test_fakes/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json create mode 100644 crates/lib/docs_rs_types/src/build_error.rs diff --git a/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json b/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json similarity index 76% rename from .sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json rename to .sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json index 6d4f685e9..ed2bfe3aa 100644 --- a/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json +++ b/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW()\n WHERE\n id = $8\n RETURNING rid as \"rid: ReleaseId\" ", + "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8\n WHERE\n id = $9\n RETURNING rid as \"rid: ReleaseId\" ", "describe": { "columns": [ { @@ -29,6 +29,7 @@ "Text", "Int8", "Date", + "Text", "Int4" ] }, @@ -36,5 +37,5 @@ false ] }, - "hash": "2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a" + "hash": "5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947" } diff --git a/crates/bin/docs_rs_builder/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json b/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json similarity index 55% rename from crates/bin/docs_rs_builder/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json rename to .sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json index 60e1078e6..25c98a9f7 100644 --- a/crates/bin/docs_rs_builder/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json +++ b/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json @@ -1,15 +1,16 @@ { "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n build_status = 'failure',\n errors = $2\n WHERE id = $1", + "query": "UPDATE builds\n SET\n build_status = 'failure',\n errors = $2,\n error_kind = $3\n WHERE id = $1", "describe": { "columns": [], "parameters": { "Left": [ "Int4", + "Text", "Text" ] }, "nullable": [] }, - "hash": "75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc" + "hash": "6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725" } diff --git a/crates/bin/docs_rs_admin/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json b/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json similarity index 72% rename from crates/bin/docs_rs_admin/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json rename to .sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json index 154247910..8aa1f8db9 100644 --- a/crates/bin/docs_rs_admin/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json +++ b/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n build_status = $1,\n errors = $2\n WHERE id = $3\n RETURNING rid as \"rid: ReleaseId\" ", + "query": "UPDATE builds\n SET\n build_status = $1,\n errors = $2,\n error_kind = $3\n WHERE id = $4\n RETURNING rid as \"rid: ReleaseId\" ", "describe": { "columns": [ { @@ -24,6 +24,7 @@ } }, "Text", + "Text", "Int4" ] }, @@ -31,5 +32,5 @@ false ] }, - "hash": "d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f" + "hash": "7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1" } diff --git a/crates/bin/docs_rs_builder/.sqlx/query-bac0eba6715837501751d9a9ff9e69da199e85e57254cbf571608b36cb865d36.json b/.sqlx/query-99961669a88e08e3803172d1755caffd9f0ee426e02cb3512df288434e40029f.json similarity index 66% rename from crates/bin/docs_rs_builder/.sqlx/query-bac0eba6715837501751d9a9ff9e69da199e85e57254cbf571608b36cb865d36.json rename to .sqlx/query-99961669a88e08e3803172d1755caffd9f0ee426e02cb3512df288434e40029f.json index 64ad6b702..9c5e18816 100644 --- a/crates/bin/docs_rs_builder/.sqlx/query-bac0eba6715837501751d9a9ff9e69da199e85e57254cbf571608b36cb865d36.json +++ b/.sqlx/query-99961669a88e08e3803172d1755caffd9f0ee426e02cb3512df288434e40029f.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "SELECT\n rustc_version,\n docsrs_version,\n build_status as \"build_status: BuildStatus\",\n errors\n FROM\n crates as c\n INNER JOIN releases as r on c.id = r.crate_id\n INNER JOIN builds as b on b.rid = r.id\n WHERE c.name = $1 and r.version = $2", + "query": "SELECT\n rustc_version,\n docsrs_version,\n build_status as \"build_status: BuildStatus\",\n error_kind,\n errors\n FROM\n crates as c\n INNER JOIN releases as r on c.id = r.crate_id\n INNER JOIN builds as b on b.rid = r.id\n WHERE c.name = $1 and r.version = $2", "describe": { "columns": [ { @@ -31,6 +31,11 @@ }, { "ordinal": 3, + "name": "error_kind", + "type_info": "Text" + }, + { + "ordinal": 4, "name": "errors", "type_info": "Text" } @@ -45,8 +50,9 @@ true, true, false, + true, true ] }, - "hash": "bac0eba6715837501751d9a9ff9e69da199e85e57254cbf571608b36cb865d36" + "hash": "99961669a88e08e3803172d1755caffd9f0ee426e02cb3512df288434e40029f" } diff --git a/crates/bin/cratesfyi/.sqlx/query-a2c5c46a3e0058c3bd23d62f1844e3ca5d6b118da33795449e9386525eea912f.json b/.sqlx/query-9cc5a9e57ba5da30aea23342ea590b53abd0867ebbd6ed2fe109984b1960c6d4.json similarity index 73% rename from crates/bin/cratesfyi/.sqlx/query-a2c5c46a3e0058c3bd23d62f1844e3ca5d6b118da33795449e9386525eea912f.json rename to .sqlx/query-9cc5a9e57ba5da30aea23342ea590b53abd0867ebbd6ed2fe109984b1960c6d4.json index b54abcdb0..68c85967b 100644 --- a/crates/bin/cratesfyi/.sqlx/query-a2c5c46a3e0058c3bd23d62f1844e3ca5d6b118da33795449e9386525eea912f.json +++ b/.sqlx/query-9cc5a9e57ba5da30aea23342ea590b53abd0867ebbd6ed2fe109984b1960c6d4.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "SELECT\n builds.rustc_version,\n builds.docsrs_version,\n builds.build_status as \"build_status: BuildStatus\",\n COALESCE(builds.build_finished, builds.build_started) as build_time,\n builds.output,\n builds.errors,\n releases.default_target\n FROM builds\n INNER JOIN releases ON releases.id = builds.rid\n INNER JOIN crates ON releases.crate_id = crates.id\n WHERE builds.id = $1 AND crates.name = $2 AND releases.version = $3", + "query": "SELECT\n builds.rustc_version,\n builds.docsrs_version,\n builds.build_status as \"build_status: BuildStatus\",\n COALESCE(builds.build_finished, builds.build_started) as build_time,\n builds.output,\n builds.errors,\n builds.error_kind,\n releases.default_target\n FROM builds\n INNER JOIN releases ON releases.id = builds.rid\n INNER JOIN crates ON releases.crate_id = crates.id\n WHERE builds.id = $1 AND crates.name = $2 AND releases.version = $3", "describe": { "columns": [ { @@ -46,6 +46,11 @@ }, { "ordinal": 6, + "name": "error_kind", + "type_info": "Text" + }, + { + "ordinal": 7, "name": "default_target", "type_info": "Varchar" } @@ -64,8 +69,9 @@ null, true, true, + true, true ] }, - "hash": "a2c5c46a3e0058c3bd23d62f1844e3ca5d6b118da33795449e9386525eea912f" + "hash": "9cc5a9e57ba5da30aea23342ea590b53abd0867ebbd6ed2fe109984b1960c6d4" } diff --git a/Cargo.lock b/Cargo.lock index 3159caf34..582e949a0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2052,6 +2052,7 @@ dependencies = [ "sysinfo", "tempfile", "test-case", + "thiserror 2.0.18", "tokio", "toml", "tracing", diff --git a/crates/bin/docs_rs_admin/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json b/crates/bin/cratesfyi/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json similarity index 76% rename from crates/bin/docs_rs_admin/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json rename to crates/bin/cratesfyi/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json index 6d4f685e9..ed2bfe3aa 100644 --- a/crates/bin/docs_rs_admin/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json +++ b/crates/bin/cratesfyi/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW()\n WHERE\n id = $8\n RETURNING rid as \"rid: ReleaseId\" ", + "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8\n WHERE\n id = $9\n RETURNING rid as \"rid: ReleaseId\" ", "describe": { "columns": [ { @@ -29,6 +29,7 @@ "Text", "Int8", "Date", + "Text", "Int4" ] }, @@ -36,5 +37,5 @@ false ] }, - "hash": "2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a" + "hash": "5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947" } diff --git a/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json b/crates/bin/cratesfyi/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json similarity index 72% rename from .sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json rename to crates/bin/cratesfyi/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json index 154247910..8aa1f8db9 100644 --- a/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json +++ b/crates/bin/cratesfyi/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n build_status = $1,\n errors = $2\n WHERE id = $3\n RETURNING rid as \"rid: ReleaseId\" ", + "query": "UPDATE builds\n SET\n build_status = $1,\n errors = $2,\n error_kind = $3\n WHERE id = $4\n RETURNING rid as \"rid: ReleaseId\" ", "describe": { "columns": [ { @@ -24,6 +24,7 @@ } }, "Text", + "Text", "Int4" ] }, @@ -31,5 +32,5 @@ false ] }, - "hash": "d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f" + "hash": "7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1" } diff --git a/crates/bin/docs_rs_web/.sqlx/query-a2c5c46a3e0058c3bd23d62f1844e3ca5d6b118da33795449e9386525eea912f.json b/crates/bin/cratesfyi/.sqlx/query-9cc5a9e57ba5da30aea23342ea590b53abd0867ebbd6ed2fe109984b1960c6d4.json similarity index 73% rename from crates/bin/docs_rs_web/.sqlx/query-a2c5c46a3e0058c3bd23d62f1844e3ca5d6b118da33795449e9386525eea912f.json rename to crates/bin/cratesfyi/.sqlx/query-9cc5a9e57ba5da30aea23342ea590b53abd0867ebbd6ed2fe109984b1960c6d4.json index b54abcdb0..68c85967b 100644 --- a/crates/bin/docs_rs_web/.sqlx/query-a2c5c46a3e0058c3bd23d62f1844e3ca5d6b118da33795449e9386525eea912f.json +++ b/crates/bin/cratesfyi/.sqlx/query-9cc5a9e57ba5da30aea23342ea590b53abd0867ebbd6ed2fe109984b1960c6d4.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "SELECT\n builds.rustc_version,\n builds.docsrs_version,\n builds.build_status as \"build_status: BuildStatus\",\n COALESCE(builds.build_finished, builds.build_started) as build_time,\n builds.output,\n builds.errors,\n releases.default_target\n FROM builds\n INNER JOIN releases ON releases.id = builds.rid\n INNER JOIN crates ON releases.crate_id = crates.id\n WHERE builds.id = $1 AND crates.name = $2 AND releases.version = $3", + "query": "SELECT\n builds.rustc_version,\n builds.docsrs_version,\n builds.build_status as \"build_status: BuildStatus\",\n COALESCE(builds.build_finished, builds.build_started) as build_time,\n builds.output,\n builds.errors,\n builds.error_kind,\n releases.default_target\n FROM builds\n INNER JOIN releases ON releases.id = builds.rid\n INNER JOIN crates ON releases.crate_id = crates.id\n WHERE builds.id = $1 AND crates.name = $2 AND releases.version = $3", "describe": { "columns": [ { @@ -46,6 +46,11 @@ }, { "ordinal": 6, + "name": "error_kind", + "type_info": "Text" + }, + { + "ordinal": 7, "name": "default_target", "type_info": "Varchar" } @@ -64,8 +69,9 @@ null, true, true, + true, true ] }, - "hash": "a2c5c46a3e0058c3bd23d62f1844e3ca5d6b118da33795449e9386525eea912f" + "hash": "9cc5a9e57ba5da30aea23342ea590b53abd0867ebbd6ed2fe109984b1960c6d4" } diff --git a/crates/bin/cratesfyi/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json b/crates/bin/docs_rs_admin/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json similarity index 76% rename from crates/bin/cratesfyi/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json rename to crates/bin/docs_rs_admin/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json index 6d4f685e9..ed2bfe3aa 100644 --- a/crates/bin/cratesfyi/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json +++ b/crates/bin/docs_rs_admin/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW()\n WHERE\n id = $8\n RETURNING rid as \"rid: ReleaseId\" ", + "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8\n WHERE\n id = $9\n RETURNING rid as \"rid: ReleaseId\" ", "describe": { "columns": [ { @@ -29,6 +29,7 @@ "Text", "Int8", "Date", + "Text", "Int4" ] }, @@ -36,5 +37,5 @@ false ] }, - "hash": "2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a" + "hash": "5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947" } diff --git a/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json b/crates/bin/docs_rs_admin/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json similarity index 55% rename from .sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json rename to crates/bin/docs_rs_admin/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json index 60e1078e6..25c98a9f7 100644 --- a/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json +++ b/crates/bin/docs_rs_admin/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json @@ -1,15 +1,16 @@ { "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n build_status = 'failure',\n errors = $2\n WHERE id = $1", + "query": "UPDATE builds\n SET\n build_status = 'failure',\n errors = $2,\n error_kind = $3\n WHERE id = $1", "describe": { "columns": [], "parameters": { "Left": [ "Int4", + "Text", "Text" ] }, "nullable": [] }, - "hash": "75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc" + "hash": "6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725" } diff --git a/crates/bin/docs_rs_builder/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json b/crates/bin/docs_rs_admin/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json similarity index 72% rename from crates/bin/docs_rs_builder/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json rename to crates/bin/docs_rs_admin/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json index 154247910..8aa1f8db9 100644 --- a/crates/bin/docs_rs_builder/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json +++ b/crates/bin/docs_rs_admin/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n build_status = $1,\n errors = $2\n WHERE id = $3\n RETURNING rid as \"rid: ReleaseId\" ", + "query": "UPDATE builds\n SET\n build_status = $1,\n errors = $2,\n error_kind = $3\n WHERE id = $4\n RETURNING rid as \"rid: ReleaseId\" ", "describe": { "columns": [ { @@ -24,6 +24,7 @@ } }, "Text", + "Text", "Int4" ] }, @@ -31,5 +32,5 @@ false ] }, - "hash": "d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f" + "hash": "7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1" } diff --git a/crates/bin/docs_rs_builder/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json b/crates/bin/docs_rs_builder/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json similarity index 76% rename from crates/bin/docs_rs_builder/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json rename to crates/bin/docs_rs_builder/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json index 6d4f685e9..ed2bfe3aa 100644 --- a/crates/bin/docs_rs_builder/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json +++ b/crates/bin/docs_rs_builder/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW()\n WHERE\n id = $8\n RETURNING rid as \"rid: ReleaseId\" ", + "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8\n WHERE\n id = $9\n RETURNING rid as \"rid: ReleaseId\" ", "describe": { "columns": [ { @@ -29,6 +29,7 @@ "Text", "Int8", "Date", + "Text", "Int4" ] }, @@ -36,5 +37,5 @@ false ] }, - "hash": "2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a" + "hash": "5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947" } diff --git a/crates/bin/docs_rs_watcher/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json b/crates/bin/docs_rs_builder/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json similarity index 55% rename from crates/bin/docs_rs_watcher/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json rename to crates/bin/docs_rs_builder/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json index 60e1078e6..25c98a9f7 100644 --- a/crates/bin/docs_rs_watcher/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json +++ b/crates/bin/docs_rs_builder/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json @@ -1,15 +1,16 @@ { "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n build_status = 'failure',\n errors = $2\n WHERE id = $1", + "query": "UPDATE builds\n SET\n build_status = 'failure',\n errors = $2,\n error_kind = $3\n WHERE id = $1", "describe": { "columns": [], "parameters": { "Left": [ "Int4", + "Text", "Text" ] }, "nullable": [] }, - "hash": "75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc" + "hash": "6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725" } diff --git a/crates/bin/cratesfyi/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json b/crates/bin/docs_rs_builder/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json similarity index 72% rename from crates/bin/cratesfyi/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json rename to crates/bin/docs_rs_builder/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json index 154247910..8aa1f8db9 100644 --- a/crates/bin/cratesfyi/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json +++ b/crates/bin/docs_rs_builder/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n build_status = $1,\n errors = $2\n WHERE id = $3\n RETURNING rid as \"rid: ReleaseId\" ", + "query": "UPDATE builds\n SET\n build_status = $1,\n errors = $2,\n error_kind = $3\n WHERE id = $4\n RETURNING rid as \"rid: ReleaseId\" ", "describe": { "columns": [ { @@ -24,6 +24,7 @@ } }, "Text", + "Text", "Int4" ] }, @@ -31,5 +32,5 @@ false ] }, - "hash": "d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f" + "hash": "7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1" } diff --git a/.sqlx/query-bac0eba6715837501751d9a9ff9e69da199e85e57254cbf571608b36cb865d36.json b/crates/bin/docs_rs_builder/.sqlx/query-99961669a88e08e3803172d1755caffd9f0ee426e02cb3512df288434e40029f.json similarity index 66% rename from .sqlx/query-bac0eba6715837501751d9a9ff9e69da199e85e57254cbf571608b36cb865d36.json rename to crates/bin/docs_rs_builder/.sqlx/query-99961669a88e08e3803172d1755caffd9f0ee426e02cb3512df288434e40029f.json index 64ad6b702..9c5e18816 100644 --- a/.sqlx/query-bac0eba6715837501751d9a9ff9e69da199e85e57254cbf571608b36cb865d36.json +++ b/crates/bin/docs_rs_builder/.sqlx/query-99961669a88e08e3803172d1755caffd9f0ee426e02cb3512df288434e40029f.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "SELECT\n rustc_version,\n docsrs_version,\n build_status as \"build_status: BuildStatus\",\n errors\n FROM\n crates as c\n INNER JOIN releases as r on c.id = r.crate_id\n INNER JOIN builds as b on b.rid = r.id\n WHERE c.name = $1 and r.version = $2", + "query": "SELECT\n rustc_version,\n docsrs_version,\n build_status as \"build_status: BuildStatus\",\n error_kind,\n errors\n FROM\n crates as c\n INNER JOIN releases as r on c.id = r.crate_id\n INNER JOIN builds as b on b.rid = r.id\n WHERE c.name = $1 and r.version = $2", "describe": { "columns": [ { @@ -31,6 +31,11 @@ }, { "ordinal": 3, + "name": "error_kind", + "type_info": "Text" + }, + { + "ordinal": 4, "name": "errors", "type_info": "Text" } @@ -45,8 +50,9 @@ true, true, false, + true, true ] }, - "hash": "bac0eba6715837501751d9a9ff9e69da199e85e57254cbf571608b36cb865d36" + "hash": "99961669a88e08e3803172d1755caffd9f0ee426e02cb3512df288434e40029f" } diff --git a/crates/bin/docs_rs_builder/Cargo.toml b/crates/bin/docs_rs_builder/Cargo.toml index 31be5f2e1..31008a490 100644 --- a/crates/bin/docs_rs_builder/Cargo.toml +++ b/crates/bin/docs_rs_builder/Cargo.toml @@ -34,6 +34,7 @@ serde_json = { workspace = true } sqlx = { workspace = true } sysinfo = { version = "0.38.0", default-features = false, features = ["system"] } tempfile = { workspace = true } +thiserror = { workspace = true } tokio = { workspace = true } toml = { workspace = true } tracing = { workspace = true } diff --git a/crates/bin/docs_rs_builder/src/docbuilder/build_error.rs b/crates/bin/docs_rs_builder/src/docbuilder/build_error.rs new file mode 100644 index 000000000..91b09756b --- /dev/null +++ b/crates/bin/docs_rs_builder/src/docbuilder/build_error.rs @@ -0,0 +1,42 @@ +use docs_rs_types::BuildError; +use rustwide::cmd::CommandError; + +#[derive(thiserror::Error, Debug)] +pub(crate) enum RustwideBuildError { + #[error(transparent)] + CommandError(#[from] CommandError), + + #[error(transparent)] + Other(anyhow::Error), +} + +impl From for RustwideBuildError { + fn from(value: anyhow::Error) -> Self { + match value.downcast::() { + Ok(err) => RustwideBuildError::CommandError(err), + Err(err) => RustwideBuildError::Other(err), + } + } +} + +impl BuildError for RustwideBuildError { + fn kind(&self) -> &'static str { + match self { + RustwideBuildError::CommandError(err) => match err { + CommandError::NoOutputFor(_) => "NoOutputFor", + CommandError::Timeout(_) => "Timeout", + CommandError::ExecutionFailed { .. } => "ExecutionFailed", + CommandError::KillAfterTimeoutFailed(_) => "KillAfterTimeoutFailed", + CommandError::SandboxOOM => "SandboxOOM", + CommandError::SandboxImagePullFailed(_) => "SandboxImagePullFailed", + CommandError::SandboxImageMissing(_) => "SandboxImageMissing", + CommandError::SandboxContainerCreate(_) => "SandboxContainerCreate", + CommandError::WorkspaceNotMountedCorrectly => "WorkspaceNotMountedCorrectly", + CommandError::InvalidDockerInspectOutput(_) => "InvalidDockerInspectOutput", + CommandError::IO(_) => "IO", + _ => "UnknownCommandError", + }, + RustwideBuildError::Other(_) => "Other", + } + } +} diff --git a/crates/bin/docs_rs_builder/src/docbuilder/mod.rs b/crates/bin/docs_rs_builder/src/docbuilder/mod.rs index 7e5e0ff7a..49a3ab352 100644 --- a/crates/bin/docs_rs_builder/src/docbuilder/mod.rs +++ b/crates/bin/docs_rs_builder/src/docbuilder/mod.rs @@ -1 +1,2 @@ +mod build_error; pub(crate) mod rustwide_builder; diff --git a/crates/bin/docs_rs_builder/src/docbuilder/rustwide_builder.rs b/crates/bin/docs_rs_builder/src/docbuilder/rustwide_builder.rs index 0de95fbfe..67476fc47 100644 --- a/crates/bin/docs_rs_builder/src/docbuilder/rustwide_builder.rs +++ b/crates/bin/docs_rs_builder/src/docbuilder/rustwide_builder.rs @@ -1,4 +1,7 @@ -use crate::{Config, metrics::BuilderMetrics, utils::copy::copy_dir_all}; +use crate::{ + Config, docbuilder::build_error::RustwideBuildError, metrics::BuilderMetrics, + utils::copy::copy_dir_all, +}; use anyhow::{Context as _, Error, Result, anyhow, bail}; use docs_rs_build_limits::{Limits, blacklist::is_blacklisted}; use docs_rs_build_queue::BuildPackageSummary; @@ -439,7 +442,7 @@ impl RustwideBuilder { true, false, )?; - if !res.result.successful { + if !res.successful() { bail!("failed to build dummy crate for {}", rustc_version); } @@ -529,7 +532,8 @@ impl RustwideBuilder { // to sentry. let mut conn = self.db.get_async().await?; - update_build_with_error(&mut conn, build_id, Some(&format!("{err:?}"))).await?; + update_build_with_error(&mut conn, build_id, Some(&RustwideBuildError::Other(err))) + .await?; Ok(BuildPackageSummary { successful: false, @@ -672,7 +676,7 @@ impl RustwideBuilder { // If the build fails with the lockfile given, try using only the dependencies listed in Cargo.toml. let cargo_lock = build.host_source_dir().join("Cargo.lock"); - if !res.result.successful && cargo_lock.exists() { + if !res.successful() && cargo_lock.exists() { info!("removing lockfile and reattempting build"); std::fs::remove_file(cargo_lock)?; { @@ -693,7 +697,7 @@ impl RustwideBuilder { self.execute_build(build_id, name, version, default_target, true, build, &limits, &metadata, false, collect_metrics)?; } - if res.result.successful + if res.successful() && let Some(name) = res.cargo_metadata.root().library_name() { let host_target = build.host_target_dir(); has_docs = host_target @@ -754,15 +758,17 @@ impl RustwideBuilder { build_id, &res.result.rustc_version, &res.result.docsrs_version, - if res.result.successful { + if res.successful() { BuildStatus::Success } else { BuildStatus::Failure }, documentation_size, - None, + res.result.build_error.as_ref() ))?; + let successful = res.successful(); + { let _span = info_span!("store_build_logs").entered(); let build_log_path = format!("build-logs/{build_id}/{default_target}.txt"); @@ -773,7 +779,7 @@ impl RustwideBuilder { } } - if res.result.successful { + if successful { self.builder_metrics.successful_builds.add(1, &[]); } else if res.cargo_metadata.root().is_library() { self.builder_metrics.failed_builds.add(1, &[]); @@ -814,7 +820,7 @@ impl RustwideBuilder { release_id.0, ).fetch_optional(&mut *async_conn))?; - if !res.result.successful && current_release_build_status == Some(BuildStatus::Success) { + if !successful && current_release_build_status == Some(BuildStatus::Success) { info!("build was unsuccessful, but the release was already successfully built in the past. Skipping release record update."); return Ok(false); } @@ -865,7 +871,7 @@ impl RustwideBuilder { } } - if res.result.successful { + if successful { // delete eventually existing files from pre-archive storage. // we're doing this in the end so eventual problems in the build // won't lead to non-existing docs. @@ -882,7 +888,7 @@ impl RustwideBuilder { drop(async_conn); }); - Ok(res.result.successful) + Ok(successful) })?; { @@ -920,7 +926,7 @@ impl RustwideBuilder { false, collect_metrics, )?; - if target_res.result.successful { + if target_res.successful() { // Cargo is not giving any error and not generating documentation of some crates // when we use a target compile options. Check documentation exists before // adding target to successfully_targets. @@ -956,12 +962,12 @@ impl RustwideBuilder { let mut storage = LogStorage::new(log::LevelFilter::Info); storage.set_max_size(limits.max_log_size()); - let successful = logging::capture(&storage, || { + let result = logging::capture(&storage, || { let _span = info_span!("cargo_build_json", target = %target).entered(); self.prepare_command(build, target, metadata, limits, rustdoc_flags, false) - .and_then(|command| command.run().map_err(Error::from)) - .is_ok() + .and_then(|command| command.run().map_err(Into::into)) }); + let successful = result.is_ok(); { let _span = info_span!("store_json_build_logs").entered(); @@ -1151,7 +1157,7 @@ impl RustwideBuilder { ); } - let successful = { + let result = { let _span = info_span!("cargo_build", target = %target, is_default_target).entered(); logging::capture(&storage, || { self.prepare_command( @@ -1162,8 +1168,7 @@ impl RustwideBuilder { rustdoc_flags, collect_metrics, ) - .and_then(|command| command.run().map_err(Error::from)) - .is_ok() + .and_then(|command| command.run().map_err(Into::into)) }) }; @@ -1184,7 +1189,7 @@ impl RustwideBuilder { // For proc-macros, cargo will put the output in `target/doc`. // Move it to the target-specific directory for consistency with other builds. // NOTE: don't rename this if the build failed, because `target/doc` won't exist. - if successful && metadata.proc_macro { + if result.is_ok() && metadata.proc_macro { assert!( is_default_target && target == HOST_TARGET, "can't handle cross-compiling macros" @@ -1202,7 +1207,7 @@ impl RustwideBuilder { result: BuildResult { rustc_version: self.rustc_version()?, docsrs_version: format!("docsrs {}", docs_rs_utils::BUILD_VERSION), - successful, + build_error: result.err(), }, doc_coverage, cargo_metadata, @@ -1219,7 +1224,7 @@ impl RustwideBuilder { limits: &Limits, mut rustdoc_flags_extras: Vec, collect_metrics: bool, - ) -> Result> { + ) -> Result, RustwideBuildError> { // Add docs.rs specific arguments let mut cargo_args = vec![ "--offline".into(), @@ -1292,7 +1297,7 @@ impl RustwideBuilder { let flag = "-Zmetrics-dir=/opt/rustwide/target/metrics"; // this is how we can reach it from outside the container. - fs::create_dir_all(build.host_target_dir().join("metrics/"))?; + fs::create_dir_all(build.host_target_dir().join("metrics/")).map_err(Error::from)?; let rustdocflags = toml::Value::try_from(vec![flag]) .expect("serializing a string should never fail") @@ -1342,11 +1347,23 @@ struct FullBuildResult { build_log: String, } +impl FullBuildResult { + pub(crate) fn successful(&self) -> bool { + self.result.successful() + } +} + #[derive(Debug)] pub(crate) struct BuildResult { pub(crate) rustc_version: String, pub(crate) docsrs_version: String, - pub(crate) successful: bool, + pub(crate) build_error: Option, +} + +impl BuildResult { + pub(crate) fn successful(&self) -> bool { + self.build_error.is_none() + } } #[cfg(test)] @@ -1358,7 +1375,8 @@ mod tests { // use crate::test::{AxumRouterTestExt, TestEnvironment}; use docs_rs_registry_api::ReleaseData; use docs_rs_types::{ - BuildStatus, CompressionAlgorithm, Feature, ReleaseId, Version, testing::V0_1, + BuildStatus, CompressionAlgorithm, Feature, ReleaseId, SimpleBuildError, Version, + testing::V0_1, }; use pretty_assertions::assert_eq; use std::{collections::BTreeMap, io, iter, path::PathBuf}; @@ -1718,7 +1736,7 @@ mod tests { "other-version", BuildStatus::Success, None, - None, + None::<&SimpleBuildError>, ) .await?; finish_release( @@ -1999,6 +2017,7 @@ mod tests { rustc_version, docsrs_version, build_status as "build_status: BuildStatus", + error_kind, errors FROM crates as c @@ -2016,6 +2035,7 @@ mod tests { assert!(row.rustc_version.is_none()); assert!(row.docsrs_version.is_none()); assert_eq!(row.build_status, BuildStatus::Failure); + assert_eq!(row.error_kind, Some("Other".into())); assert!(row.errors.unwrap().contains("missing Cargo.toml")); Ok(()) diff --git a/crates/bin/docs_rs_import_release/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json b/crates/bin/docs_rs_import_release/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json deleted file mode 100644 index 6d4f685e9..000000000 --- a/crates/bin/docs_rs_import_release/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW()\n WHERE\n id = $8\n RETURNING rid as \"rid: ReleaseId\" ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "rid: ReleaseId", - "type_info": "Int4" - } - ], - "parameters": { - "Left": [ - "Varchar", - "Varchar", - { - "Custom": { - "name": "build_status", - "kind": { - "Enum": [ - "in_progress", - "success", - "failure" - ] - } - } - }, - "Text", - "Text", - "Int8", - "Date", - "Int4" - ] - }, - "nullable": [ - false - ] - }, - "hash": "2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a" -} diff --git a/crates/bin/docs_rs_import_release/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json b/crates/bin/docs_rs_import_release/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json new file mode 100644 index 000000000..ed2bfe3aa --- /dev/null +++ b/crates/bin/docs_rs_import_release/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json @@ -0,0 +1,41 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8\n WHERE\n id = $9\n RETURNING rid as \"rid: ReleaseId\" ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "rid: ReleaseId", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + "Varchar", + "Varchar", + { + "Custom": { + "name": "build_status", + "kind": { + "Enum": [ + "in_progress", + "success", + "failure" + ] + } + } + }, + "Text", + "Text", + "Int8", + "Date", + "Text", + "Int4" + ] + }, + "nullable": [ + false + ] + }, + "hash": "5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947" +} diff --git a/crates/bin/docs_rs_import_release/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json b/crates/bin/docs_rs_import_release/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json new file mode 100644 index 000000000..8aa1f8db9 --- /dev/null +++ b/crates/bin/docs_rs_import_release/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json @@ -0,0 +1,36 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE builds\n SET\n build_status = $1,\n errors = $2,\n error_kind = $3\n WHERE id = $4\n RETURNING rid as \"rid: ReleaseId\" ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "rid: ReleaseId", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + { + "Custom": { + "name": "build_status", + "kind": { + "Enum": [ + "in_progress", + "success", + "failure" + ] + } + } + }, + "Text", + "Text", + "Int4" + ] + }, + "nullable": [ + false + ] + }, + "hash": "7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1" +} diff --git a/crates/bin/docs_rs_import_release/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json b/crates/bin/docs_rs_import_release/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json deleted file mode 100644 index 154247910..000000000 --- a/crates/bin/docs_rs_import_release/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n build_status = $1,\n errors = $2\n WHERE id = $3\n RETURNING rid as \"rid: ReleaseId\" ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "rid: ReleaseId", - "type_info": "Int4" - } - ], - "parameters": { - "Left": [ - { - "Custom": { - "name": "build_status", - "kind": { - "Enum": [ - "in_progress", - "success", - "failure" - ] - } - } - }, - "Text", - "Int4" - ] - }, - "nullable": [ - false - ] - }, - "hash": "d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f" -} diff --git a/crates/bin/docs_rs_import_release/src/import.rs b/crates/bin/docs_rs_import_release/src/import.rs index dbf90a921..229ae1195 100644 --- a/crates/bin/docs_rs_import_release/src/import.rs +++ b/crates/bin/docs_rs_import_release/src/import.rs @@ -18,7 +18,9 @@ use docs_rs_rustdoc_json::{ }; use docs_rs_storage::{AsyncStorage, file_list_to_json, rustdoc_archive_path, source_archive_path}; use docs_rs_storage::{compress, decompress, rustdoc_json_path}; -use docs_rs_types::{BuildId, BuildStatus, CrateId, KrateName, ReleaseId, ReqVersion, Version}; +use docs_rs_types::{ + BuildId, BuildStatus, CrateId, KrateName, ReleaseId, ReqVersion, SimpleBuildError, Version, +}; use docs_rs_utils::{BUILD_VERSION, spawn_blocking}; use docsrs_metadata::Metadata; use std::collections::HashSet; @@ -72,7 +74,12 @@ pub(crate) async fn import_test_release( .await; if let Err(err) = &result { - update_build_with_error(&mut *conn, build_id, Some(&format!("{err:?}"))).await?; + update_build_with_error( + &mut *conn, + build_id, + Some(&SimpleBuildError(format!("{err:?}"))), + ) + .await?; } result @@ -241,7 +248,7 @@ async fn import_test_release_inner( BUILD_VERSION, BuildStatus::Success, Some(documentation_size), - None, + None::<&SimpleBuildError>, ) .await?; diff --git a/crates/bin/docs_rs_watcher/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json b/crates/bin/docs_rs_watcher/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json deleted file mode 100644 index 6d4f685e9..000000000 --- a/crates/bin/docs_rs_watcher/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW()\n WHERE\n id = $8\n RETURNING rid as \"rid: ReleaseId\" ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "rid: ReleaseId", - "type_info": "Int4" - } - ], - "parameters": { - "Left": [ - "Varchar", - "Varchar", - { - "Custom": { - "name": "build_status", - "kind": { - "Enum": [ - "in_progress", - "success", - "failure" - ] - } - } - }, - "Text", - "Text", - "Int8", - "Date", - "Int4" - ] - }, - "nullable": [ - false - ] - }, - "hash": "2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a" -} diff --git a/crates/bin/docs_rs_watcher/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json b/crates/bin/docs_rs_watcher/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json new file mode 100644 index 000000000..ed2bfe3aa --- /dev/null +++ b/crates/bin/docs_rs_watcher/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json @@ -0,0 +1,41 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8\n WHERE\n id = $9\n RETURNING rid as \"rid: ReleaseId\" ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "rid: ReleaseId", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + "Varchar", + "Varchar", + { + "Custom": { + "name": "build_status", + "kind": { + "Enum": [ + "in_progress", + "success", + "failure" + ] + } + } + }, + "Text", + "Text", + "Int8", + "Date", + "Text", + "Int4" + ] + }, + "nullable": [ + false + ] + }, + "hash": "5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947" +} diff --git a/crates/bin/docs_rs_admin/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json b/crates/bin/docs_rs_watcher/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json similarity index 55% rename from crates/bin/docs_rs_admin/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json rename to crates/bin/docs_rs_watcher/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json index 60e1078e6..25c98a9f7 100644 --- a/crates/bin/docs_rs_admin/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json +++ b/crates/bin/docs_rs_watcher/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json @@ -1,15 +1,16 @@ { "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n build_status = 'failure',\n errors = $2\n WHERE id = $1", + "query": "UPDATE builds\n SET\n build_status = 'failure',\n errors = $2,\n error_kind = $3\n WHERE id = $1", "describe": { "columns": [], "parameters": { "Left": [ "Int4", + "Text", "Text" ] }, "nullable": [] }, - "hash": "75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc" + "hash": "6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725" } diff --git a/crates/bin/docs_rs_watcher/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json b/crates/bin/docs_rs_watcher/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json new file mode 100644 index 000000000..8aa1f8db9 --- /dev/null +++ b/crates/bin/docs_rs_watcher/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json @@ -0,0 +1,36 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE builds\n SET\n build_status = $1,\n errors = $2,\n error_kind = $3\n WHERE id = $4\n RETURNING rid as \"rid: ReleaseId\" ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "rid: ReleaseId", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + { + "Custom": { + "name": "build_status", + "kind": { + "Enum": [ + "in_progress", + "success", + "failure" + ] + } + } + }, + "Text", + "Text", + "Int4" + ] + }, + "nullable": [ + false + ] + }, + "hash": "7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1" +} diff --git a/crates/bin/docs_rs_watcher/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json b/crates/bin/docs_rs_watcher/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json deleted file mode 100644 index 154247910..000000000 --- a/crates/bin/docs_rs_watcher/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n build_status = $1,\n errors = $2\n WHERE id = $3\n RETURNING rid as \"rid: ReleaseId\" ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "rid: ReleaseId", - "type_info": "Int4" - } - ], - "parameters": { - "Left": [ - { - "Custom": { - "name": "build_status", - "kind": { - "Enum": [ - "in_progress", - "success", - "failure" - ] - } - } - }, - "Text", - "Int4" - ] - }, - "nullable": [ - false - ] - }, - "hash": "d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f" -} diff --git a/crates/bin/docs_rs_watcher/src/db/delete.rs b/crates/bin/docs_rs_watcher/src/db/delete.rs index 5979bd9d1..15639a6c3 100644 --- a/crates/bin/docs_rs_watcher/src/db/delete.rs +++ b/crates/bin/docs_rs_watcher/src/db/delete.rs @@ -209,7 +209,7 @@ mod tests { use docs_rs_storage::rustdoc_json_path; use docs_rs_test_fakes::{CrateOwner, OwnerKind, fake_release_that_failed_before_build}; use docs_rs_types::{ - CompressionAlgorithm, ReleaseId, + CompressionAlgorithm, ReleaseId, SimpleBuildError, testing::{BAR, FOO, KRATE, V1, V2}, }; use test_case::test_case; @@ -520,8 +520,13 @@ mod tests { let mut conn = env.async_conn().await?; - let (release_id, _) = - fake_release_that_failed_before_build(&mut conn, &KRATE, V1, "some-error").await?; + let (release_id, _) = fake_release_that_failed_before_build( + &mut conn, + &KRATE, + V1, + SimpleBuildError("some-error".into()), + ) + .await?; delete_version(&mut conn, env.storage()?, &KRATE, &V1).await?; @@ -535,8 +540,13 @@ mod tests { let env = TestEnvironment::new().await?; let mut conn = env.async_conn().await?; - let (release_id, _) = - fake_release_that_failed_before_build(&mut conn, &KRATE, V1, "some-error").await?; + let (release_id, _) = fake_release_that_failed_before_build( + &mut conn, + &KRATE, + V1, + SimpleBuildError("some-error".into()), + ) + .await?; delete_crate(&mut conn, env.storage()?, &KRATE).await?; diff --git a/crates/bin/docs_rs_web/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json b/crates/bin/docs_rs_web/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json deleted file mode 100644 index 6d4f685e9..000000000 --- a/crates/bin/docs_rs_web/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW()\n WHERE\n id = $8\n RETURNING rid as \"rid: ReleaseId\" ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "rid: ReleaseId", - "type_info": "Int4" - } - ], - "parameters": { - "Left": [ - "Varchar", - "Varchar", - { - "Custom": { - "name": "build_status", - "kind": { - "Enum": [ - "in_progress", - "success", - "failure" - ] - } - } - }, - "Text", - "Text", - "Int8", - "Date", - "Int4" - ] - }, - "nullable": [ - false - ] - }, - "hash": "2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a" -} diff --git a/crates/bin/docs_rs_web/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json b/crates/bin/docs_rs_web/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json new file mode 100644 index 000000000..ed2bfe3aa --- /dev/null +++ b/crates/bin/docs_rs_web/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json @@ -0,0 +1,41 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8\n WHERE\n id = $9\n RETURNING rid as \"rid: ReleaseId\" ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "rid: ReleaseId", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + "Varchar", + "Varchar", + { + "Custom": { + "name": "build_status", + "kind": { + "Enum": [ + "in_progress", + "success", + "failure" + ] + } + } + }, + "Text", + "Text", + "Int8", + "Date", + "Text", + "Int4" + ] + }, + "nullable": [ + false + ] + }, + "hash": "5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947" +} diff --git a/crates/bin/docs_rs_web/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json b/crates/bin/docs_rs_web/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json new file mode 100644 index 000000000..25c98a9f7 --- /dev/null +++ b/crates/bin/docs_rs_web/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json @@ -0,0 +1,16 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE builds\n SET\n build_status = 'failure',\n errors = $2,\n error_kind = $3\n WHERE id = $1", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Int4", + "Text", + "Text" + ] + }, + "nullable": [] + }, + "hash": "6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725" +} diff --git a/crates/bin/docs_rs_web/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json b/crates/bin/docs_rs_web/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json deleted file mode 100644 index 60e1078e6..000000000 --- a/crates/bin/docs_rs_web/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n build_status = 'failure',\n errors = $2\n WHERE id = $1", - "describe": { - "columns": [], - "parameters": { - "Left": [ - "Int4", - "Text" - ] - }, - "nullable": [] - }, - "hash": "75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc" -} diff --git a/crates/bin/docs_rs_web/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json b/crates/bin/docs_rs_web/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json new file mode 100644 index 000000000..8aa1f8db9 --- /dev/null +++ b/crates/bin/docs_rs_web/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json @@ -0,0 +1,36 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE builds\n SET\n build_status = $1,\n errors = $2,\n error_kind = $3\n WHERE id = $4\n RETURNING rid as \"rid: ReleaseId\" ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "rid: ReleaseId", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + { + "Custom": { + "name": "build_status", + "kind": { + "Enum": [ + "in_progress", + "success", + "failure" + ] + } + } + }, + "Text", + "Text", + "Int4" + ] + }, + "nullable": [ + false + ] + }, + "hash": "7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1" +} diff --git a/.sqlx/query-a2c5c46a3e0058c3bd23d62f1844e3ca5d6b118da33795449e9386525eea912f.json b/crates/bin/docs_rs_web/.sqlx/query-9cc5a9e57ba5da30aea23342ea590b53abd0867ebbd6ed2fe109984b1960c6d4.json similarity index 73% rename from .sqlx/query-a2c5c46a3e0058c3bd23d62f1844e3ca5d6b118da33795449e9386525eea912f.json rename to crates/bin/docs_rs_web/.sqlx/query-9cc5a9e57ba5da30aea23342ea590b53abd0867ebbd6ed2fe109984b1960c6d4.json index b54abcdb0..68c85967b 100644 --- a/.sqlx/query-a2c5c46a3e0058c3bd23d62f1844e3ca5d6b118da33795449e9386525eea912f.json +++ b/crates/bin/docs_rs_web/.sqlx/query-9cc5a9e57ba5da30aea23342ea590b53abd0867ebbd6ed2fe109984b1960c6d4.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "SELECT\n builds.rustc_version,\n builds.docsrs_version,\n builds.build_status as \"build_status: BuildStatus\",\n COALESCE(builds.build_finished, builds.build_started) as build_time,\n builds.output,\n builds.errors,\n releases.default_target\n FROM builds\n INNER JOIN releases ON releases.id = builds.rid\n INNER JOIN crates ON releases.crate_id = crates.id\n WHERE builds.id = $1 AND crates.name = $2 AND releases.version = $3", + "query": "SELECT\n builds.rustc_version,\n builds.docsrs_version,\n builds.build_status as \"build_status: BuildStatus\",\n COALESCE(builds.build_finished, builds.build_started) as build_time,\n builds.output,\n builds.errors,\n builds.error_kind,\n releases.default_target\n FROM builds\n INNER JOIN releases ON releases.id = builds.rid\n INNER JOIN crates ON releases.crate_id = crates.id\n WHERE builds.id = $1 AND crates.name = $2 AND releases.version = $3", "describe": { "columns": [ { @@ -46,6 +46,11 @@ }, { "ordinal": 6, + "name": "error_kind", + "type_info": "Text" + }, + { + "ordinal": 7, "name": "default_target", "type_info": "Varchar" } @@ -64,8 +69,9 @@ null, true, true, + true, true ] }, - "hash": "a2c5c46a3e0058c3bd23d62f1844e3ca5d6b118da33795449e9386525eea912f" + "hash": "9cc5a9e57ba5da30aea23342ea590b53abd0867ebbd6ed2fe109984b1960c6d4" } diff --git a/crates/bin/docs_rs_web/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json b/crates/bin/docs_rs_web/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json deleted file mode 100644 index 154247910..000000000 --- a/crates/bin/docs_rs_web/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n build_status = $1,\n errors = $2\n WHERE id = $3\n RETURNING rid as \"rid: ReleaseId\" ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "rid: ReleaseId", - "type_info": "Int4" - } - ], - "parameters": { - "Left": [ - { - "Custom": { - "name": "build_status", - "kind": { - "Enum": [ - "in_progress", - "success", - "failure" - ] - } - } - }, - "Text", - "Int4" - ] - }, - "nullable": [ - false - ] - }, - "hash": "d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f" -} diff --git a/crates/bin/docs_rs_web/src/handlers/build_details.rs b/crates/bin/docs_rs_web/src/handlers/build_details.rs index 881161752..febd2c165 100644 --- a/crates/bin/docs_rs_web/src/handlers/build_details.rs +++ b/crates/bin/docs_rs_web/src/handlers/build_details.rs @@ -27,6 +27,7 @@ pub(crate) struct BuildDetails { build_time: Option>, output: String, errors: Option, + error_kind: Option, } #[derive(Template)] @@ -90,6 +91,7 @@ pub(crate) async fn build_details_handler( COALESCE(builds.build_finished, builds.build_started) as build_time, builds.output, builds.errors, + builds.error_kind, releases.default_target FROM builds INNER JOIN releases ON releases.id = builds.rid @@ -172,6 +174,7 @@ pub(crate) async fn build_details_handler( build_time: row.build_time, output, errors: row.errors, + error_kind: row.error_kind, }, all_log_filenames, current_filename, @@ -187,7 +190,7 @@ mod tests { async_wrapper, }; use docs_rs_test_fakes::{FakeBuild, fake_release_that_failed_before_build}; - use docs_rs_types::{BuildId, ReleaseId, testing::V0_1}; + use docs_rs_types::{BuildId, ReleaseId, SimpleBuildError, testing::V0_1}; use kuchikiki::traits::TendrilSink; use test_case::test_case; @@ -228,7 +231,7 @@ mod tests { &mut conn, "foo", "0.1.0", - "some random error", + SimpleBuildError("some random error".into()), ) .await?; @@ -244,6 +247,9 @@ mod tests { let info_text = page.select("pre").unwrap().next().unwrap().text_contents(); + assert!(info_text.contains("# error kind"), "{}", info_text); + assert!(info_text.contains("SimpleBuildError"), "{}", info_text); + assert!(info_text.contains("# pre-build errors"), "{}", info_text); assert!(info_text.contains("some random error"), "{}", info_text); @@ -259,7 +265,7 @@ mod tests { &mut conn, "foo", "0.1.0", - "some random error", + SimpleBuildError("some random error".into()), ) .await?; @@ -282,6 +288,9 @@ mod tests { let info_text = page.select("pre").unwrap().next().unwrap().text_contents(); + assert!(info_text.contains("# error kind"), "{}", info_text); + assert!(info_text.contains("SimpleBuildError"), "{}", info_text); + assert!(info_text.contains("# pre-build errors"), "{}", info_text); assert!(info_text.contains("some random error"), "{}", info_text); diff --git a/crates/bin/docs_rs_web/src/handlers/builds.rs b/crates/bin/docs_rs_web/src/handlers/builds.rs index e92ffa651..26af7f82e 100644 --- a/crates/bin/docs_rs_web/src/handlers/builds.rs +++ b/crates/bin/docs_rs_web/src/handlers/builds.rs @@ -240,7 +240,7 @@ mod tests { use docs_rs_build_limits::Overrides; use docs_rs_test_fakes::{FakeBuild, fake_release_that_failed_before_build}; use docs_rs_types::{ - BuildStatus, + BuildStatus, SimpleBuildError, testing::{FOO, V1, V2}, }; use kuchikiki::traits::TendrilSink; @@ -251,7 +251,13 @@ mod tests { fn build_list_empty_build() { async_wrapper(|env| async move { let mut conn = env.async_conn().await?; - fake_release_that_failed_before_build(&mut conn, "foo", "0.1.0", "some errors").await?; + fake_release_that_failed_before_build( + &mut conn, + "foo", + "0.1.0", + SimpleBuildError("some errors".into()), + ) + .await?; let response = env .web_app() 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 da9429883..85ffe2eee 100644 --- a/crates/bin/docs_rs_web/src/handlers/crate_details.rs +++ b/crates/bin/docs_rs_web/src/handlers/crate_details.rs @@ -703,8 +703,8 @@ mod tests { use docs_rs_database::{crate_details::releases_for_crate, releases::update_build_status}; use docs_rs_registry_api::CrateOwner; use docs_rs_test_fakes::{FakeBuild, fake_release_that_failed_before_build}; - use docs_rs_types::KrateName; use docs_rs_types::testing::{FOO, V1}; + use docs_rs_types::{KrateName, SimpleBuildError}; use http::StatusCode; use kuchikiki::traits::TendrilSink; use pretty_assertions::assert_eq; @@ -1740,7 +1740,13 @@ mod tests { fn test_minimal_failed_release_doesnt_error_features() { async_wrapper(|env| async move { let mut conn = env.async_conn().await?; - fake_release_that_failed_before_build(&mut conn, "foo", "0.1.0", "some errors").await?; + fake_release_that_failed_before_build( + &mut conn, + "foo", + "0.1.0", + SimpleBuildError("some errors".into()), + ) + .await?; let text_content = env .web_app() @@ -1764,7 +1770,13 @@ mod tests { fn test_minimal_failed_release_doesnt_error() { async_wrapper(|env| async move { let mut conn = env.async_conn().await?; - fake_release_that_failed_before_build(&mut conn, "foo", "0.1.0", "some errors").await?; + fake_release_that_failed_before_build( + &mut conn, + "foo", + "0.1.0", + SimpleBuildError("some errors".into()), + ) + .await?; let text_content = env .web_app() diff --git a/crates/bin/docs_rs_web/src/handlers/releases.rs b/crates/bin/docs_rs_web/src/handlers/releases.rs index 1e090ef23..5bab5b34a 100644 --- a/crates/bin/docs_rs_web/src/handlers/releases.rs +++ b/crates/bin/docs_rs_web/src/handlers/releases.rs @@ -814,7 +814,7 @@ mod tests { use docs_rs_registry_api::{CrateOwner, OwnerKind}; use docs_rs_test_fakes::{FakeBuild, fake_release_that_failed_before_build}; use docs_rs_types::{ - BuildStatus, + BuildStatus, SimpleBuildError, testing::{BAR, BAZ, FOO, V0_1, V1, V2, V3}, }; use kuchikiki::traits::TendrilSink; @@ -840,7 +840,7 @@ mod tests { "docs.rs 4.0.0", BuildStatus::Success, None, - None, + None::<&SimpleBuildError>, ) .await?; @@ -1434,7 +1434,7 @@ mod tests { &mut conn, "failed_hard", "0.1.0", - "some random error", + SimpleBuildError("some random error".into()), ) .await?; diff --git a/crates/bin/docs_rs_web/templates/crate/build_details.html b/crates/bin/docs_rs_web/templates/crate/build_details.html index 581dd11d5..47b8d70c3 100644 --- a/crates/bin/docs_rs_web/templates/crate/build_details.html +++ b/crates/bin/docs_rs_web/templates/crate/build_details.html @@ -49,24 +49,39 @@ {%- filter dedent(None)|safe -%}
+                    {%- if let Some(error_kind) = build_details.error_kind -%}
+                        

+ # error kind + {{ error_kind }} +

+ {%- endif -%} + {%- if let Some(errors) = build_details.errors -%} +

# pre-build errors {{ errors }} +

{%- endif -%} {%- if let Some(rustc_version) = build_details.rustc_version -%} +

# rustc version {{ rustc_version }} +

{%- endif -%} {%- if let Some(docsrs_version) = build_details.docsrs_version -%} +

# docs.rs version {{ docsrs_version }} +

{%- endif -%} {%- if !build_details.output.is_empty() -%} +

# build log {{ build_details.output }} +

{%- endif -%}
{%- endfilter -%} diff --git a/crates/lib/docs_rs_build_limits/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json b/crates/lib/docs_rs_build_limits/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json deleted file mode 100644 index 6d4f685e9..000000000 --- a/crates/lib/docs_rs_build_limits/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW()\n WHERE\n id = $8\n RETURNING rid as \"rid: ReleaseId\" ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "rid: ReleaseId", - "type_info": "Int4" - } - ], - "parameters": { - "Left": [ - "Varchar", - "Varchar", - { - "Custom": { - "name": "build_status", - "kind": { - "Enum": [ - "in_progress", - "success", - "failure" - ] - } - } - }, - "Text", - "Text", - "Int8", - "Date", - "Int4" - ] - }, - "nullable": [ - false - ] - }, - "hash": "2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a" -} diff --git a/crates/lib/docs_rs_build_limits/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json b/crates/lib/docs_rs_build_limits/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json new file mode 100644 index 000000000..ed2bfe3aa --- /dev/null +++ b/crates/lib/docs_rs_build_limits/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json @@ -0,0 +1,41 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8\n WHERE\n id = $9\n RETURNING rid as \"rid: ReleaseId\" ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "rid: ReleaseId", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + "Varchar", + "Varchar", + { + "Custom": { + "name": "build_status", + "kind": { + "Enum": [ + "in_progress", + "success", + "failure" + ] + } + } + }, + "Text", + "Text", + "Int8", + "Date", + "Text", + "Int4" + ] + }, + "nullable": [ + false + ] + }, + "hash": "5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947" +} diff --git a/crates/lib/docs_rs_build_limits/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json b/crates/lib/docs_rs_build_limits/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json new file mode 100644 index 000000000..8aa1f8db9 --- /dev/null +++ b/crates/lib/docs_rs_build_limits/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json @@ -0,0 +1,36 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE builds\n SET\n build_status = $1,\n errors = $2,\n error_kind = $3\n WHERE id = $4\n RETURNING rid as \"rid: ReleaseId\" ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "rid: ReleaseId", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + { + "Custom": { + "name": "build_status", + "kind": { + "Enum": [ + "in_progress", + "success", + "failure" + ] + } + } + }, + "Text", + "Text", + "Int4" + ] + }, + "nullable": [ + false + ] + }, + "hash": "7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1" +} diff --git a/crates/lib/docs_rs_build_limits/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json b/crates/lib/docs_rs_build_limits/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json deleted file mode 100644 index 154247910..000000000 --- a/crates/lib/docs_rs_build_limits/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n build_status = $1,\n errors = $2\n WHERE id = $3\n RETURNING rid as \"rid: ReleaseId\" ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "rid: ReleaseId", - "type_info": "Int4" - } - ], - "parameters": { - "Left": [ - { - "Custom": { - "name": "build_status", - "kind": { - "Enum": [ - "in_progress", - "success", - "failure" - ] - } - } - }, - "Text", - "Int4" - ] - }, - "nullable": [ - false - ] - }, - "hash": "d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f" -} diff --git a/crates/lib/docs_rs_build_queue/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json b/crates/lib/docs_rs_build_queue/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json deleted file mode 100644 index 6d4f685e9..000000000 --- a/crates/lib/docs_rs_build_queue/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW()\n WHERE\n id = $8\n RETURNING rid as \"rid: ReleaseId\" ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "rid: ReleaseId", - "type_info": "Int4" - } - ], - "parameters": { - "Left": [ - "Varchar", - "Varchar", - { - "Custom": { - "name": "build_status", - "kind": { - "Enum": [ - "in_progress", - "success", - "failure" - ] - } - } - }, - "Text", - "Text", - "Int8", - "Date", - "Int4" - ] - }, - "nullable": [ - false - ] - }, - "hash": "2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a" -} diff --git a/crates/lib/docs_rs_build_queue/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json b/crates/lib/docs_rs_build_queue/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json new file mode 100644 index 000000000..ed2bfe3aa --- /dev/null +++ b/crates/lib/docs_rs_build_queue/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json @@ -0,0 +1,41 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8\n WHERE\n id = $9\n RETURNING rid as \"rid: ReleaseId\" ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "rid: ReleaseId", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + "Varchar", + "Varchar", + { + "Custom": { + "name": "build_status", + "kind": { + "Enum": [ + "in_progress", + "success", + "failure" + ] + } + } + }, + "Text", + "Text", + "Int8", + "Date", + "Text", + "Int4" + ] + }, + "nullable": [ + false + ] + }, + "hash": "5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947" +} diff --git a/crates/lib/docs_rs_build_queue/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json b/crates/lib/docs_rs_build_queue/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json new file mode 100644 index 000000000..25c98a9f7 --- /dev/null +++ b/crates/lib/docs_rs_build_queue/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json @@ -0,0 +1,16 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE builds\n SET\n build_status = 'failure',\n errors = $2,\n error_kind = $3\n WHERE id = $1", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Int4", + "Text", + "Text" + ] + }, + "nullable": [] + }, + "hash": "6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725" +} diff --git a/crates/lib/docs_rs_build_queue/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json b/crates/lib/docs_rs_build_queue/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json deleted file mode 100644 index 60e1078e6..000000000 --- a/crates/lib/docs_rs_build_queue/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n build_status = 'failure',\n errors = $2\n WHERE id = $1", - "describe": { - "columns": [], - "parameters": { - "Left": [ - "Int4", - "Text" - ] - }, - "nullable": [] - }, - "hash": "75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc" -} diff --git a/crates/lib/docs_rs_build_queue/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json b/crates/lib/docs_rs_build_queue/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json new file mode 100644 index 000000000..8aa1f8db9 --- /dev/null +++ b/crates/lib/docs_rs_build_queue/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json @@ -0,0 +1,36 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE builds\n SET\n build_status = $1,\n errors = $2,\n error_kind = $3\n WHERE id = $4\n RETURNING rid as \"rid: ReleaseId\" ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "rid: ReleaseId", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + { + "Custom": { + "name": "build_status", + "kind": { + "Enum": [ + "in_progress", + "success", + "failure" + ] + } + } + }, + "Text", + "Text", + "Int4" + ] + }, + "nullable": [ + false + ] + }, + "hash": "7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1" +} diff --git a/crates/lib/docs_rs_build_queue/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json b/crates/lib/docs_rs_build_queue/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json deleted file mode 100644 index 154247910..000000000 --- a/crates/lib/docs_rs_build_queue/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n build_status = $1,\n errors = $2\n WHERE id = $3\n RETURNING rid as \"rid: ReleaseId\" ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "rid: ReleaseId", - "type_info": "Int4" - } - ], - "parameters": { - "Left": [ - { - "Custom": { - "name": "build_status", - "kind": { - "Enum": [ - "in_progress", - "success", - "failure" - ] - } - } - }, - "Text", - "Int4" - ] - }, - "nullable": [ - false - ] - }, - "hash": "d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f" -} diff --git a/crates/lib/docs_rs_context/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json b/crates/lib/docs_rs_context/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json deleted file mode 100644 index 6d4f685e9..000000000 --- a/crates/lib/docs_rs_context/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW()\n WHERE\n id = $8\n RETURNING rid as \"rid: ReleaseId\" ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "rid: ReleaseId", - "type_info": "Int4" - } - ], - "parameters": { - "Left": [ - "Varchar", - "Varchar", - { - "Custom": { - "name": "build_status", - "kind": { - "Enum": [ - "in_progress", - "success", - "failure" - ] - } - } - }, - "Text", - "Text", - "Int8", - "Date", - "Int4" - ] - }, - "nullable": [ - false - ] - }, - "hash": "2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a" -} diff --git a/crates/lib/docs_rs_context/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json b/crates/lib/docs_rs_context/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json new file mode 100644 index 000000000..ed2bfe3aa --- /dev/null +++ b/crates/lib/docs_rs_context/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json @@ -0,0 +1,41 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8\n WHERE\n id = $9\n RETURNING rid as \"rid: ReleaseId\" ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "rid: ReleaseId", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + "Varchar", + "Varchar", + { + "Custom": { + "name": "build_status", + "kind": { + "Enum": [ + "in_progress", + "success", + "failure" + ] + } + } + }, + "Text", + "Text", + "Int8", + "Date", + "Text", + "Int4" + ] + }, + "nullable": [ + false + ] + }, + "hash": "5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947" +} diff --git a/crates/lib/docs_rs_context/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json b/crates/lib/docs_rs_context/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json new file mode 100644 index 000000000..25c98a9f7 --- /dev/null +++ b/crates/lib/docs_rs_context/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json @@ -0,0 +1,16 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE builds\n SET\n build_status = 'failure',\n errors = $2,\n error_kind = $3\n WHERE id = $1", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Int4", + "Text", + "Text" + ] + }, + "nullable": [] + }, + "hash": "6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725" +} diff --git a/crates/lib/docs_rs_context/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json b/crates/lib/docs_rs_context/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json deleted file mode 100644 index 60e1078e6..000000000 --- a/crates/lib/docs_rs_context/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n build_status = 'failure',\n errors = $2\n WHERE id = $1", - "describe": { - "columns": [], - "parameters": { - "Left": [ - "Int4", - "Text" - ] - }, - "nullable": [] - }, - "hash": "75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc" -} diff --git a/crates/lib/docs_rs_context/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json b/crates/lib/docs_rs_context/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json new file mode 100644 index 000000000..8aa1f8db9 --- /dev/null +++ b/crates/lib/docs_rs_context/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json @@ -0,0 +1,36 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE builds\n SET\n build_status = $1,\n errors = $2,\n error_kind = $3\n WHERE id = $4\n RETURNING rid as \"rid: ReleaseId\" ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "rid: ReleaseId", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + { + "Custom": { + "name": "build_status", + "kind": { + "Enum": [ + "in_progress", + "success", + "failure" + ] + } + } + }, + "Text", + "Text", + "Int4" + ] + }, + "nullable": [ + false + ] + }, + "hash": "7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1" +} diff --git a/crates/lib/docs_rs_context/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json b/crates/lib/docs_rs_context/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json deleted file mode 100644 index 154247910..000000000 --- a/crates/lib/docs_rs_context/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n build_status = $1,\n errors = $2\n WHERE id = $3\n RETURNING rid as \"rid: ReleaseId\" ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "rid: ReleaseId", - "type_info": "Int4" - } - ], - "parameters": { - "Left": [ - { - "Custom": { - "name": "build_status", - "kind": { - "Enum": [ - "in_progress", - "success", - "failure" - ] - } - } - }, - "Text", - "Int4" - ] - }, - "nullable": [ - false - ] - }, - "hash": "d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f" -} diff --git a/crates/lib/docs_rs_database/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json b/crates/lib/docs_rs_database/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json deleted file mode 100644 index 6d4f685e9..000000000 --- a/crates/lib/docs_rs_database/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW()\n WHERE\n id = $8\n RETURNING rid as \"rid: ReleaseId\" ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "rid: ReleaseId", - "type_info": "Int4" - } - ], - "parameters": { - "Left": [ - "Varchar", - "Varchar", - { - "Custom": { - "name": "build_status", - "kind": { - "Enum": [ - "in_progress", - "success", - "failure" - ] - } - } - }, - "Text", - "Text", - "Int8", - "Date", - "Int4" - ] - }, - "nullable": [ - false - ] - }, - "hash": "2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a" -} diff --git a/crates/lib/docs_rs_database/.sqlx/query-8552f463bfc719f100e0e678b1400ea593a24d5d0c9ef291f786a27669cd626d.json b/crates/lib/docs_rs_database/.sqlx/query-587beee6aca99144cce9aec29b3321a560ce522b241a0c3a66d203711fa6af30.json similarity index 80% rename from crates/lib/docs_rs_database/.sqlx/query-8552f463bfc719f100e0e678b1400ea593a24d5d0c9ef291f786a27669cd626d.json rename to crates/lib/docs_rs_database/.sqlx/query-587beee6aca99144cce9aec29b3321a560ce522b241a0c3a66d203711fa6af30.json index 773538685..bcbeb391b 100644 --- a/crates/lib/docs_rs_database/.sqlx/query-8552f463bfc719f100e0e678b1400ea593a24d5d0c9ef291f786a27669cd626d.json +++ b/crates/lib/docs_rs_database/.sqlx/query-587beee6aca99144cce9aec29b3321a560ce522b241a0c3a66d203711fa6af30.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "SELECT\n rustc_version,\n docsrs_version,\n build_started,\n build_status as \"build_status: BuildStatus\",\n errors\n FROM builds\n WHERE id = $1", + "query": "SELECT\n rustc_version,\n docsrs_version,\n build_started,\n build_status as \"build_status: BuildStatus\",\n errors,\n error_kind\n FROM builds\n WHERE id = $1", "describe": { "columns": [ { @@ -38,6 +38,11 @@ "ordinal": 4, "name": "errors", "type_info": "Text" + }, + { + "ordinal": 5, + "name": "error_kind", + "type_info": "Text" } ], "parameters": { @@ -50,8 +55,9 @@ true, true, false, + true, true ] }, - "hash": "8552f463bfc719f100e0e678b1400ea593a24d5d0c9ef291f786a27669cd626d" + "hash": "587beee6aca99144cce9aec29b3321a560ce522b241a0c3a66d203711fa6af30" } diff --git a/crates/lib/docs_rs_database/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json b/crates/lib/docs_rs_database/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json new file mode 100644 index 000000000..ed2bfe3aa --- /dev/null +++ b/crates/lib/docs_rs_database/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json @@ -0,0 +1,41 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8\n WHERE\n id = $9\n RETURNING rid as \"rid: ReleaseId\" ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "rid: ReleaseId", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + "Varchar", + "Varchar", + { + "Custom": { + "name": "build_status", + "kind": { + "Enum": [ + "in_progress", + "success", + "failure" + ] + } + } + }, + "Text", + "Text", + "Int8", + "Date", + "Text", + "Int4" + ] + }, + "nullable": [ + false + ] + }, + "hash": "5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947" +} diff --git a/crates/lib/docs_rs_database/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json b/crates/lib/docs_rs_database/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json new file mode 100644 index 000000000..8aa1f8db9 --- /dev/null +++ b/crates/lib/docs_rs_database/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json @@ -0,0 +1,36 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE builds\n SET\n build_status = $1,\n errors = $2,\n error_kind = $3\n WHERE id = $4\n RETURNING rid as \"rid: ReleaseId\" ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "rid: ReleaseId", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + { + "Custom": { + "name": "build_status", + "kind": { + "Enum": [ + "in_progress", + "success", + "failure" + ] + } + } + }, + "Text", + "Text", + "Int4" + ] + }, + "nullable": [ + false + ] + }, + "hash": "7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1" +} diff --git a/crates/lib/docs_rs_database/.sqlx/query-0da90d737b6bf2c1c1b0ab6b14c73c8363125578b1d6e30a99e70aa6bf7842c2.json b/crates/lib/docs_rs_database/.sqlx/query-820a877a5fd6426b8429668d95dd9ef8eb67338b3e0e24818868a20684eb26bb.json similarity index 72% rename from crates/lib/docs_rs_database/.sqlx/query-0da90d737b6bf2c1c1b0ab6b14c73c8363125578b1d6e30a99e70aa6bf7842c2.json rename to crates/lib/docs_rs_database/.sqlx/query-820a877a5fd6426b8429668d95dd9ef8eb67338b3e0e24818868a20684eb26bb.json index 78624ea28..6505a2dfb 100644 --- a/crates/lib/docs_rs_database/.sqlx/query-0da90d737b6bf2c1c1b0ab6b14c73c8363125578b1d6e30a99e70aa6bf7842c2.json +++ b/crates/lib/docs_rs_database/.sqlx/query-820a877a5fd6426b8429668d95dd9ef8eb67338b3e0e24818868a20684eb26bb.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "SELECT\n rustc_version,\n docsrs_version,\n build_status as \"build_status: BuildStatus\",\n documentation_size,\n errors\n FROM builds\n WHERE id = $1", + "query": "SELECT\n rustc_version,\n docsrs_version,\n build_status as \"build_status: BuildStatus\",\n documentation_size,\n errors,\n error_kind,\n rustc_nightly_date\n FROM builds\n WHERE id = $1", "describe": { "columns": [ { @@ -38,6 +38,16 @@ "ordinal": 4, "name": "errors", "type_info": "Text" + }, + { + "ordinal": 5, + "name": "error_kind", + "type_info": "Text" + }, + { + "ordinal": 6, + "name": "rustc_nightly_date", + "type_info": "Date" } ], "parameters": { @@ -50,8 +60,10 @@ true, false, true, + true, + true, true ] }, - "hash": "0da90d737b6bf2c1c1b0ab6b14c73c8363125578b1d6e30a99e70aa6bf7842c2" + "hash": "820a877a5fd6426b8429668d95dd9ef8eb67338b3e0e24818868a20684eb26bb" } diff --git a/crates/lib/docs_rs_database/.sqlx/query-c955871bcda914feac9cfb23fe010399c0b3f75e92ac425fa4ec337e9b250c26.json b/crates/lib/docs_rs_database/.sqlx/query-b03260d3baa15f399748d0925cd6adbaeb6b40280c43aaff3911e4950e326baa.json similarity index 75% rename from crates/lib/docs_rs_database/.sqlx/query-c955871bcda914feac9cfb23fe010399c0b3f75e92ac425fa4ec337e9b250c26.json rename to crates/lib/docs_rs_database/.sqlx/query-b03260d3baa15f399748d0925cd6adbaeb6b40280c43aaff3911e4950e326baa.json index 61ff84b5f..17e01c936 100644 --- a/crates/lib/docs_rs_database/.sqlx/query-c955871bcda914feac9cfb23fe010399c0b3f75e92ac425fa4ec337e9b250c26.json +++ b/crates/lib/docs_rs_database/.sqlx/query-b03260d3baa15f399748d0925cd6adbaeb6b40280c43aaff3911e4950e326baa.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "SELECT\n rustc_version,\n docsrs_version,\n build_status as \"build_status: BuildStatus\",\n errors,\n rustc_nightly_date\n FROM builds\n WHERE id = $1", + "query": "SELECT\n rustc_version,\n docsrs_version,\n build_status as \"build_status: BuildStatus\",\n errors,\n error_kind,\n rustc_nightly_date\n FROM builds\n WHERE id = $1", "describe": { "columns": [ { @@ -36,6 +36,11 @@ }, { "ordinal": 4, + "name": "error_kind", + "type_info": "Text" + }, + { + "ordinal": 5, "name": "rustc_nightly_date", "type_info": "Date" } @@ -50,8 +55,9 @@ true, false, true, + true, true ] }, - "hash": "c955871bcda914feac9cfb23fe010399c0b3f75e92ac425fa4ec337e9b250c26" + "hash": "b03260d3baa15f399748d0925cd6adbaeb6b40280c43aaff3911e4950e326baa" } diff --git a/crates/lib/docs_rs_database/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json b/crates/lib/docs_rs_database/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json deleted file mode 100644 index 154247910..000000000 --- a/crates/lib/docs_rs_database/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n build_status = $1,\n errors = $2\n WHERE id = $3\n RETURNING rid as \"rid: ReleaseId\" ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "rid: ReleaseId", - "type_info": "Int4" - } - ], - "parameters": { - "Left": [ - { - "Custom": { - "name": "build_status", - "kind": { - "Enum": [ - "in_progress", - "success", - "failure" - ] - } - } - }, - "Text", - "Int4" - ] - }, - "nullable": [ - false - ] - }, - "hash": "d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f" -} diff --git a/crates/lib/docs_rs_database/.sqlx/query-64d91ec806ed67d6cffd1a797da5059cc8fb44b37f94dc77877c88d266c5ac9b.json b/crates/lib/docs_rs_database/.sqlx/query-d74ff0da3d5e0a0be4bb5dc4bfd891504e8a1bef45551a2645801b28957e656f.json similarity index 82% rename from crates/lib/docs_rs_database/.sqlx/query-64d91ec806ed67d6cffd1a797da5059cc8fb44b37f94dc77877c88d266c5ac9b.json rename to crates/lib/docs_rs_database/.sqlx/query-d74ff0da3d5e0a0be4bb5dc4bfd891504e8a1bef45551a2645801b28957e656f.json index 4eb0f97f7..41224c20f 100644 --- a/crates/lib/docs_rs_database/.sqlx/query-64d91ec806ed67d6cffd1a797da5059cc8fb44b37f94dc77877c88d266c5ac9b.json +++ b/crates/lib/docs_rs_database/.sqlx/query-d74ff0da3d5e0a0be4bb5dc4bfd891504e8a1bef45551a2645801b28957e656f.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "SELECT\n rustc_version,\n docsrs_version,\n build_status as \"build_status: BuildStatus\",\n documentation_size,\n errors,\n rustc_nightly_date\n FROM builds\n WHERE id = $1", + "query": "SELECT\n rustc_version,\n docsrs_version,\n build_status as \"build_status: BuildStatus\",\n documentation_size,\n errors,\n error_kind\n FROM builds\n WHERE id = $1", "describe": { "columns": [ { @@ -41,8 +41,8 @@ }, { "ordinal": 5, - "name": "rustc_nightly_date", - "type_info": "Date" + "name": "error_kind", + "type_info": "Text" } ], "parameters": { @@ -59,5 +59,5 @@ true ] }, - "hash": "64d91ec806ed67d6cffd1a797da5059cc8fb44b37f94dc77877c88d266c5ac9b" + "hash": "d74ff0da3d5e0a0be4bb5dc4bfd891504e8a1bef45551a2645801b28957e656f" } diff --git a/crates/lib/docs_rs_database/migrations/20260211013415_builds-error-kind.down.sql b/crates/lib/docs_rs_database/migrations/20260211013415_builds-error-kind.down.sql new file mode 100644 index 000000000..9ffd35814 --- /dev/null +++ b/crates/lib/docs_rs_database/migrations/20260211013415_builds-error-kind.down.sql @@ -0,0 +1,2 @@ +DROP INDEX builds_error_kind_idx; +ALTER TABLE builds DROP COLUMN error_kind; diff --git a/crates/lib/docs_rs_database/migrations/20260211013415_builds-error-kind.up.sql b/crates/lib/docs_rs_database/migrations/20260211013415_builds-error-kind.up.sql new file mode 100644 index 000000000..a153e5ad1 --- /dev/null +++ b/crates/lib/docs_rs_database/migrations/20260211013415_builds-error-kind.up.sql @@ -0,0 +1,2 @@ +ALTER TABLE builds ADD COLUMN error_kind TEXT; +CREATE INDEX builds_error_kind_idx ON builds USING btree (error_kind) ; diff --git a/crates/lib/docs_rs_database/src/releases.rs b/crates/lib/docs_rs_database/src/releases.rs index 169cec2cf..687300ea2 100644 --- a/crates/lib/docs_rs_database/src/releases.rs +++ b/crates/lib/docs_rs_database/src/releases.rs @@ -3,8 +3,8 @@ use anyhow::{Context, Result, anyhow}; use docs_rs_cargo_metadata::{MetadataPackage, ReleaseDependencyList}; use docs_rs_registry_api::{CrateData, CrateOwner, ReleaseData}; use docs_rs_types::{ - BuildId, BuildStatus, CompressionAlgorithm, CrateId, DocCoverage, Feature, KrateName, - ReleaseId, Version, + BuildError, BuildId, BuildStatus, CompressionAlgorithm, CrateId, DocCoverage, Feature, + KrateName, ReleaseId, Version, }; use docs_rs_utils::rustc_version::parse_rustc_date; use futures_util::stream::TryStreamExt; @@ -221,15 +221,18 @@ pub async fn add_doc_coverage( /// Adds a build into database #[instrument(skip(conn))] -pub async fn finish_build( +pub async fn finish_build( conn: &mut sqlx::PgConnection, build_id: BuildId, rustc_version: &str, docsrs_version: &str, build_status: BuildStatus, documentation_size: Option, - errors: Option<&str>, -) -> Result<()> { + build_error: Option<&E>, +) -> Result<()> +where + E: BuildError, +{ debug!("updating build after finishing"); let hostname = hostname::get()?; @@ -257,18 +260,20 @@ pub async fn finish_build( errors = $5, documentation_size = $6, rustc_nightly_date = $7, - build_finished = NOW() + build_finished = NOW(), + error_kind = $8 WHERE - id = $8 + id = $9 RETURNING rid as "rid: ReleaseId" "#, rustc_version, docsrs_version, build_status as BuildStatus, hostname.to_str().unwrap_or(""), - errors, + build_error.map(|err| err.to_string()), documentation_size.map(|v| v as i64), rustc_date, - build_id.0, + build_error.map(|err| err.kind()), + build_id as _, ) .fetch_one(&mut *conn) .await?; @@ -279,21 +284,26 @@ pub async fn finish_build( } #[instrument(skip(conn))] -pub async fn update_build_with_error( +pub async fn update_build_with_error( conn: &mut sqlx::PgConnection, build_id: BuildId, - errors: Option<&str>, -) -> Result { + build_error: Option<&E>, +) -> Result +where + E: BuildError, +{ debug!("updating build with error"); let release_id = sqlx::query_scalar!( r#"UPDATE builds SET build_status = $1, - errors = $2 - WHERE id = $3 + errors = $2, + error_kind = $3 + WHERE id = $4 RETURNING rid as "rid: ReleaseId" "#, BuildStatus::Failure as BuildStatus, - errors, + build_error.map(|err| err.to_string()), + build_error.map(|err| err.kind()), build_id.0, ) .fetch_one(&mut *conn) @@ -608,7 +618,7 @@ mod test { use docs_rs_opentelemetry::testing::TestMetrics; use docs_rs_registry_api::OwnerKind; use docs_rs_types::{ - KrateName, + KrateName, SimpleBuildError, testing::{DEFAULT_TARGET, KRATE, V0_1, V1}, }; use std::{collections::BTreeMap, iter, slice}; @@ -677,7 +687,12 @@ mod test { let release_id = initialize_release(&mut conn, crate_id, &V0_1).await?; let build_id = initialize_build(&mut conn, release_id).await?; - update_build_with_error(&mut conn, build_id, Some("error message")).await?; + update_build_with_error( + &mut conn, + build_id, + Some(&SimpleBuildError("error message".into())), + ) + .await?; let row = sqlx::query!( r#"SELECT @@ -685,10 +700,11 @@ mod test { docsrs_version, build_started, build_status as "build_status: BuildStatus", - errors - FROM builds - WHERE id = $1"#, - build_id.0 + errors, + error_kind + FROM builds + WHERE id = $1"#, + build_id as _ ) .fetch_one(&mut *conn) .await?; @@ -697,7 +713,8 @@ mod test { assert!(row.docsrs_version.is_none()); assert!(row.build_started.is_some()); assert_eq!(row.build_status, BuildStatus::Failure); - assert_eq!(row.errors, Some("error message".into())); + assert_eq!(row.errors, Some("build error: error message".into())); + assert_eq!(row.error_kind, Some("SimpleBuildError".into())); Ok(()) } @@ -719,7 +736,7 @@ mod test { "docsrs_version", BuildStatus::Success, None, - None, + None::<&SimpleBuildError>, ) .await?; @@ -729,6 +746,7 @@ mod test { docsrs_version, build_status as "build_status: BuildStatus", errors, + error_kind, rustc_nightly_date FROM builds WHERE id = $1"#, @@ -748,6 +766,7 @@ mod test { Some(NaiveDate::from_ymd_opt(2024, 10, 15).unwrap()) ); assert!(row.errors.is_none()); + assert!(row.error_kind.is_none()); Ok(()) } @@ -769,7 +788,7 @@ mod test { "docsrs_version", BuildStatus::Success, Some(42), - None, + None::<&SimpleBuildError>, ) .await?; @@ -780,6 +799,7 @@ mod test { build_status as "build_status: BuildStatus", documentation_size, errors, + error_kind, rustc_nightly_date FROM builds WHERE id = $1"#, @@ -794,6 +814,7 @@ mod test { assert_eq!(row.documentation_size, Some(42)); assert!(row.rustc_nightly_date.is_none()); assert!(row.errors.is_none()); + assert!(row.error_kind.is_none()); Ok(()) } @@ -815,7 +836,7 @@ mod test { "docsrs_version", BuildStatus::Failure, None, - Some("error message"), + Some(&SimpleBuildError("error message".into())), ) .await?; @@ -825,10 +846,11 @@ mod test { docsrs_version, build_status as "build_status: BuildStatus", documentation_size, - errors - FROM builds - WHERE id = $1"#, - build_id.0 + errors, + error_kind + FROM builds + WHERE id = $1"#, + build_id as _ ) .fetch_one(&mut *conn) .await?; @@ -836,7 +858,8 @@ mod test { assert_eq!(row.rustc_version, Some("rustc_version".into())); assert_eq!(row.docsrs_version, Some("docsrs_version".into())); assert_eq!(row.build_status, BuildStatus::Failure); - assert_eq!(row.errors, Some("error message".into())); + assert_eq!(row.errors, Some("build error: error message".into())); + assert_eq!(row.error_kind, Some("SimpleBuildError".into())); assert!(row.documentation_size.is_none()); Ok(()) diff --git a/crates/lib/docs_rs_repository_stats/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json b/crates/lib/docs_rs_repository_stats/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json deleted file mode 100644 index 6d4f685e9..000000000 --- a/crates/lib/docs_rs_repository_stats/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW()\n WHERE\n id = $8\n RETURNING rid as \"rid: ReleaseId\" ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "rid: ReleaseId", - "type_info": "Int4" - } - ], - "parameters": { - "Left": [ - "Varchar", - "Varchar", - { - "Custom": { - "name": "build_status", - "kind": { - "Enum": [ - "in_progress", - "success", - "failure" - ] - } - } - }, - "Text", - "Text", - "Int8", - "Date", - "Int4" - ] - }, - "nullable": [ - false - ] - }, - "hash": "2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a" -} diff --git a/crates/lib/docs_rs_repository_stats/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json b/crates/lib/docs_rs_repository_stats/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json new file mode 100644 index 000000000..ed2bfe3aa --- /dev/null +++ b/crates/lib/docs_rs_repository_stats/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json @@ -0,0 +1,41 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8\n WHERE\n id = $9\n RETURNING rid as \"rid: ReleaseId\" ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "rid: ReleaseId", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + "Varchar", + "Varchar", + { + "Custom": { + "name": "build_status", + "kind": { + "Enum": [ + "in_progress", + "success", + "failure" + ] + } + } + }, + "Text", + "Text", + "Int8", + "Date", + "Text", + "Int4" + ] + }, + "nullable": [ + false + ] + }, + "hash": "5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947" +} diff --git a/crates/lib/docs_rs_repository_stats/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json b/crates/lib/docs_rs_repository_stats/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json new file mode 100644 index 000000000..25c98a9f7 --- /dev/null +++ b/crates/lib/docs_rs_repository_stats/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json @@ -0,0 +1,16 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE builds\n SET\n build_status = 'failure',\n errors = $2,\n error_kind = $3\n WHERE id = $1", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Int4", + "Text", + "Text" + ] + }, + "nullable": [] + }, + "hash": "6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725" +} diff --git a/crates/lib/docs_rs_repository_stats/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json b/crates/lib/docs_rs_repository_stats/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json deleted file mode 100644 index 60e1078e6..000000000 --- a/crates/lib/docs_rs_repository_stats/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n build_status = 'failure',\n errors = $2\n WHERE id = $1", - "describe": { - "columns": [], - "parameters": { - "Left": [ - "Int4", - "Text" - ] - }, - "nullable": [] - }, - "hash": "75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc" -} diff --git a/crates/lib/docs_rs_repository_stats/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json b/crates/lib/docs_rs_repository_stats/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json new file mode 100644 index 000000000..8aa1f8db9 --- /dev/null +++ b/crates/lib/docs_rs_repository_stats/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json @@ -0,0 +1,36 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE builds\n SET\n build_status = $1,\n errors = $2,\n error_kind = $3\n WHERE id = $4\n RETURNING rid as \"rid: ReleaseId\" ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "rid: ReleaseId", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + { + "Custom": { + "name": "build_status", + "kind": { + "Enum": [ + "in_progress", + "success", + "failure" + ] + } + } + }, + "Text", + "Text", + "Int4" + ] + }, + "nullable": [ + false + ] + }, + "hash": "7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1" +} diff --git a/crates/lib/docs_rs_repository_stats/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json b/crates/lib/docs_rs_repository_stats/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json deleted file mode 100644 index 154247910..000000000 --- a/crates/lib/docs_rs_repository_stats/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n build_status = $1,\n errors = $2\n WHERE id = $3\n RETURNING rid as \"rid: ReleaseId\" ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "rid: ReleaseId", - "type_info": "Int4" - } - ], - "parameters": { - "Left": [ - { - "Custom": { - "name": "build_status", - "kind": { - "Enum": [ - "in_progress", - "success", - "failure" - ] - } - } - }, - "Text", - "Int4" - ] - }, - "nullable": [ - false - ] - }, - "hash": "d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f" -} diff --git a/crates/lib/docs_rs_test_fakes/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json b/crates/lib/docs_rs_test_fakes/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json deleted file mode 100644 index 6d4f685e9..000000000 --- a/crates/lib/docs_rs_test_fakes/.sqlx/query-2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW()\n WHERE\n id = $8\n RETURNING rid as \"rid: ReleaseId\" ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "rid: ReleaseId", - "type_info": "Int4" - } - ], - "parameters": { - "Left": [ - "Varchar", - "Varchar", - { - "Custom": { - "name": "build_status", - "kind": { - "Enum": [ - "in_progress", - "success", - "failure" - ] - } - } - }, - "Text", - "Text", - "Int8", - "Date", - "Int4" - ] - }, - "nullable": [ - false - ] - }, - "hash": "2056327f710b8e427e21bf427a24edaffcf58f68237f572e1c14801dc41fba3a" -} diff --git a/crates/lib/docs_rs_test_fakes/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json b/crates/lib/docs_rs_test_fakes/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json new file mode 100644 index 000000000..ed2bfe3aa --- /dev/null +++ b/crates/lib/docs_rs_test_fakes/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json @@ -0,0 +1,41 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8\n WHERE\n id = $9\n RETURNING rid as \"rid: ReleaseId\" ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "rid: ReleaseId", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + "Varchar", + "Varchar", + { + "Custom": { + "name": "build_status", + "kind": { + "Enum": [ + "in_progress", + "success", + "failure" + ] + } + } + }, + "Text", + "Text", + "Int8", + "Date", + "Text", + "Int4" + ] + }, + "nullable": [ + false + ] + }, + "hash": "5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947" +} diff --git a/crates/lib/docs_rs_test_fakes/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json b/crates/lib/docs_rs_test_fakes/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json new file mode 100644 index 000000000..25c98a9f7 --- /dev/null +++ b/crates/lib/docs_rs_test_fakes/.sqlx/query-6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725.json @@ -0,0 +1,16 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE builds\n SET\n build_status = 'failure',\n errors = $2,\n error_kind = $3\n WHERE id = $1", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Int4", + "Text", + "Text" + ] + }, + "nullable": [] + }, + "hash": "6a448c78dd3fc7c95f13567969dd79b9dd72f6b389dadca630745928612fa725" +} diff --git a/crates/lib/docs_rs_test_fakes/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json b/crates/lib/docs_rs_test_fakes/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json deleted file mode 100644 index 60e1078e6..000000000 --- a/crates/lib/docs_rs_test_fakes/.sqlx/query-75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n build_status = 'failure',\n errors = $2\n WHERE id = $1", - "describe": { - "columns": [], - "parameters": { - "Left": [ - "Int4", - "Text" - ] - }, - "nullable": [] - }, - "hash": "75aa15d4c8898403835cdaf3d27c9973a3f45abc9cf73e171011a2ded4d97dfc" -} diff --git a/crates/lib/docs_rs_test_fakes/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json b/crates/lib/docs_rs_test_fakes/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json new file mode 100644 index 000000000..8aa1f8db9 --- /dev/null +++ b/crates/lib/docs_rs_test_fakes/.sqlx/query-7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1.json @@ -0,0 +1,36 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE builds\n SET\n build_status = $1,\n errors = $2,\n error_kind = $3\n WHERE id = $4\n RETURNING rid as \"rid: ReleaseId\" ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "rid: ReleaseId", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + { + "Custom": { + "name": "build_status", + "kind": { + "Enum": [ + "in_progress", + "success", + "failure" + ] + } + } + }, + "Text", + "Text", + "Int4" + ] + }, + "nullable": [ + false + ] + }, + "hash": "7633edc3884e73fc8edad8f5e1539b79ab4ea2ff504cf2319324403b979365e1" +} diff --git a/crates/lib/docs_rs_test_fakes/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json b/crates/lib/docs_rs_test_fakes/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json deleted file mode 100644 index 154247910..000000000 --- a/crates/lib/docs_rs_test_fakes/.sqlx/query-d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n build_status = $1,\n errors = $2\n WHERE id = $3\n RETURNING rid as \"rid: ReleaseId\" ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "rid: ReleaseId", - "type_info": "Int4" - } - ], - "parameters": { - "Left": [ - { - "Custom": { - "name": "build_status", - "kind": { - "Enum": [ - "in_progress", - "success", - "failure" - ] - } - } - }, - "Text", - "Int4" - ] - }, - "nullable": [ - false - ] - }, - "hash": "d675aff9079a87e41891c589eaffa2497eba27fcee660f3d92241eaeda02ac0f" -} diff --git a/crates/lib/docs_rs_test_fakes/src/legacy.rs b/crates/lib/docs_rs_test_fakes/src/legacy.rs index 5aeafc253..64a85fece 100644 --- a/crates/lib/docs_rs_test_fakes/src/legacy.rs +++ b/crates/lib/docs_rs_test_fakes/src/legacy.rs @@ -13,8 +13,8 @@ use docs_rs_storage::{ source_archive_path, }; use docs_rs_types::{ - BuildId, BuildStatus, CompressionAlgorithm, DocCoverage, KrateName, ReleaseId, Version, - VersionReq, + BuildError, BuildId, BuildStatus, CompressionAlgorithm, DocCoverage, KrateName, ReleaseId, + SimpleBuildError, Version, VersionReq, }; use std::{ collections::{BTreeMap, HashMap}, @@ -26,13 +26,14 @@ use tracing::debug; /// Create a fake release in the database that failed before the build. /// This is a temporary small factory function only until we refactored the /// `FakeRelease` and `FakeBuild` factories to be more flexible. -pub async fn fake_release_that_failed_before_build( +pub async fn fake_release_that_failed_before_build( conn: &mut sqlx::PgConnection, name: K, version: V, - errors: &str, + build_error: E, ) -> Result<(ReleaseId, BuildId)> where + E: BuildError, K: TryInto, K::Error: std::error::Error + Send + Sync + 'static, V: TryInto, @@ -48,10 +49,12 @@ where "UPDATE builds SET build_status = 'failure', - errors = $2 + errors = $2, + error_kind = $3 WHERE id = $1", build_id.0, - errors, + build_error.to_string(), + build_error.kind(), ) .execute(&mut *conn) .await?; @@ -705,7 +708,7 @@ impl FakeBuild { &self.docsrs_version, self.build_status, Some(42), - None, + None::<&SimpleBuildError>, ) .await?; diff --git a/crates/lib/docs_rs_types/src/build_error.rs b/crates/lib/docs_rs_types/src/build_error.rs new file mode 100644 index 000000000..2e4f23b1a --- /dev/null +++ b/crates/lib/docs_rs_types/src/build_error.rs @@ -0,0 +1,29 @@ +use std::{error, fmt}; + +/// a trait for build errors. +/// +/// Idea is: +/// Every build error has +/// * a text representation, and +/// * a "kind" (error code) +pub trait BuildError: error::Error + fmt::Display + fmt::Debug + Sized { + fn kind(&self) -> &'static str; +} + +/// a simple build error struct, mostly for testing & utilities. +/// +/// The "real" build error is `RustwideBuildError` in our builder subcrate. +#[derive(thiserror::Error, Debug)] +#[error("build error: {0}")] +pub struct SimpleBuildError(pub String); +impl BuildError for SimpleBuildError { + fn kind(&self) -> &'static str { + "SimpleBuildError" + } +} + +impl From<&str> for SimpleBuildError { + fn from(s: &str) -> Self { + Self(s.to_string()) + } +} diff --git a/crates/lib/docs_rs_types/src/lib.rs b/crates/lib/docs_rs_types/src/lib.rs index acaa4b148..ee9c8badf 100644 --- a/crates/lib/docs_rs_types/src/lib.rs +++ b/crates/lib/docs_rs_types/src/lib.rs @@ -1,3 +1,4 @@ +mod build_error; mod build_status; mod compression_algorithm; pub(crate) mod convert; @@ -11,6 +12,7 @@ mod req_version; pub mod testing; mod version; +pub use build_error::{BuildError, SimpleBuildError}; pub use build_status::BuildStatus; pub use compression_algorithm::{CompressionAlgorithm, compression_from_file_extension}; pub use doc_coverage::{DocCoverage, RawFileCoverage};