Skip to content

Commit 1df9ffa

Browse files
Nemo157syphar
authored andcommitted
WIP: Add in-progress build state
1 parent 1a0ee85 commit 1df9ffa

23 files changed

+339
-123
lines changed

.sqlx/query-c2c61482135c3ce90493b537bde0d8347bfdfa3ea4d630fb827fa67788436e48.json renamed to .sqlx/query-1379f2cb71474de2ce28373283210ecf32505d1dad95e7d05bc310e9deb47411.json

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.sqlx/query-790af2d57b8d036f14a9a8874c2fc94c4cd6b3d4acd5eb2e67c1fb5729b5471a.json renamed to .sqlx/query-19123a7751cdf06658d0341289fb4d63bacdfb30ea9addededd2a55fb5638ad7.json

+15-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.sqlx/query-96817014a0af7e5946ecd00000ff08b5deaa12d85e1e0bb7bd845beafb0f2702.json renamed to .sqlx/query-913903768e8fd453e3246370a8147fb9828c88b1e5b8195bc0a0bcc037219923.json

+15-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.sqlx/query-52e3b1e5c230a9a08bb3b823e7be6777db89d84991adb3469267a3d56fafb17a.json renamed to .sqlx/query-9a6a50ddbc1d07ef5648726f135eeca83ec922c4e9da07516b5f963b3551f4ee.json

+15-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.sqlx/query-a7cbfecb1e270232061de05fa4a53f926d9e289dcb4b03cba3e3eeebce74dfe0.json renamed to .sqlx/query-b29681d013e952b90a2fe01db50da562d6ef7ab5ab19c6c992235db5bd931e8c.json

+15-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.sqlx/query-d9f0166f4e46d6a601f0668606e1487eab21d8900c096f7e7e4629c210b3a371.json

+12-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
LOCK builds, releases;
2+
3+
DELETE FROM builds WHERE build_status = 'in_progress';
4+
5+
ALTER TABLE builds ALTER build_status
6+
TYPE BOOL
7+
USING build_status = 'success';
8+
9+
DROP TYPE BUILD_STATUS;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
CREATE TYPE build_status AS ENUM (
2+
'in_progress',
3+
'success',
4+
'failure'
5+
);
6+
7+
ALTER TABLE builds ALTER build_status
8+
TYPE build_status
9+
USING CASE
10+
WHEN build_status
11+
THEN 'success'::build_status
12+
ELSE 'failure'::build_status
13+
END;

src/db/add_package.rs

+8-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use crate::{
2-
db::types::Feature,
3-
docbuilder::{BuildResult, DocCoverage},
2+
db::types::{BuildStatus, Feature},
3+
docbuilder::DocCoverage,
44
error::Result,
55
registry_api::{CrateData, CrateOwner, ReleaseData},
66
storage::CompressionAlgorithm,
@@ -177,7 +177,9 @@ pub(crate) async fn add_doc_coverage(
177177
pub(crate) async fn add_build_into_database(
178178
conn: &mut sqlx::PgConnection,
179179
release_id: i32,
180-
res: &BuildResult,
180+
rustc_version: &str,
181+
docsrs_version: &str,
182+
build_status: BuildStatus,
181183
) -> Result<i32> {
182184
debug!("Adding build into database");
183185
let hostname = hostname::get()?;
@@ -186,9 +188,9 @@ pub(crate) async fn add_build_into_database(
186188
VALUES ($1, $2, $3, $4, $5)
187189
RETURNING id",
188190
release_id,
189-
res.rustc_version,
190-
res.docsrs_version,
191-
res.successful,
191+
rustc_version,
192+
docsrs_version,
193+
build_status as BuildStatus,
192194
hostname.to_str().unwrap_or(""),
193195
)
194196
.fetch_one(&mut *conn)

src/db/types.rs

+15-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use postgres_types::{FromSql, ToSql};
2-
use serde::Serialize;
2+
use serde::{Deserialize, Serialize};
33

44
#[derive(Debug, Clone, PartialEq, Eq, Serialize, FromSql, ToSql, sqlx::Type)]
55
#[postgres(name = "feature")]
@@ -23,3 +23,17 @@ impl sqlx::postgres::PgHasArrayType for Feature {
2323
sqlx::postgres::PgTypeInfo::with_name("_feature")
2424
}
2525
}
26+
27+
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, sqlx::Type)]
28+
#[sqlx(type_name = "build_status", rename_all = "snake_case")]
29+
pub(crate) enum BuildStatus {
30+
Success,
31+
Failure,
32+
InProgress,
33+
}
34+
35+
impl BuildStatus {
36+
pub(crate) fn is_success(&self) -> bool {
37+
matches!(self, BuildStatus::Success)
38+
}
39+
}

src/docbuilder/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@ mod limits;
22
mod rustwide_builder;
33

44
pub(crate) use self::limits::Limits;
5-
pub(crate) use self::rustwide_builder::{BuildResult, DocCoverage};
5+
pub(crate) use self::rustwide_builder::DocCoverage;
66
pub use self::rustwide_builder::{PackageKind, RustwideBuilder};

src/docbuilder/rustwide_builder.rs

+10-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::db::file::add_path_into_database;
22
use crate::db::{
33
add_build_into_database, add_doc_coverage, add_package_into_database,
4-
add_path_into_remote_archive, update_crate_data_in_database, Pool,
4+
add_path_into_remote_archive, types::BuildStatus, update_crate_data_in_database, Pool,
55
};
66
use crate::docbuilder::Limits;
77
use crate::error::Result;
@@ -580,11 +580,19 @@ impl RustwideBuilder {
580580
))?;
581581
}
582582

583+
let build_status = if res.result.successful {
584+
BuildStatus::Success
585+
} else {
586+
BuildStatus::Failure
587+
};
583588
let build_id = self.runtime.block_on(add_build_into_database(
584589
&mut async_conn,
585590
release_id,
586-
&res.result,
591+
&res.result.rustc_version,
592+
&res.result.docsrs_version,
593+
build_status,
587594
))?;
595+
588596
let build_log_path = format!("build-logs/{build_id}/{default_target}.txt");
589597
self.storage.store_one(build_log_path, res.build_log)?;
590598

0 commit comments

Comments
 (0)