fc-common: format

Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I946272ee6563f5bca0844c5a25ba08f66a6a6964
This commit is contained in:
raf 2026-02-18 11:30:58 +03:00
commit 23a4a8e348
Signed by: NotAShelf
GPG key ID: 29D95B64378DB4BF
3 changed files with 25 additions and 33 deletions

View file

@ -413,21 +413,21 @@ pub struct Channel {
/// Remote builder for multi-machine / multi-arch builds. /// Remote builder for multi-machine / multi-arch builds.
#[derive(Debug, Clone, Serialize, Deserialize, FromRow)] #[derive(Debug, Clone, Serialize, Deserialize, FromRow)]
pub struct RemoteBuilder { pub struct RemoteBuilder {
pub id: Uuid, pub id: Uuid,
pub name: String, pub name: String,
pub ssh_uri: String, pub ssh_uri: String,
pub systems: Vec<String>, pub systems: Vec<String>,
pub max_jobs: i32, pub max_jobs: i32,
pub speed_factor: i32, pub speed_factor: i32,
pub supported_features: Vec<String>, pub supported_features: Vec<String>,
pub mandatory_features: Vec<String>, pub mandatory_features: Vec<String>,
pub enabled: bool, pub enabled: bool,
pub public_host_key: Option<String>, pub public_host_key: Option<String>,
pub ssh_key_file: Option<String>, pub ssh_key_file: Option<String>,
pub created_at: DateTime<Utc>, pub created_at: DateTime<Utc>,
pub consecutive_failures: i32, pub consecutive_failures: i32,
pub disabled_until: Option<DateTime<Utc>>, pub disabled_until: Option<DateTime<Utc>>,
pub last_failure: Option<DateTime<Utc>>, pub last_failure: Option<DateTime<Utc>>,
} }
/// User account for authentication and personalization /// User account for authentication and personalization

View file

@ -387,11 +387,7 @@ pub async fn list_pinned_ids(
} }
/// Set the `keep` (GC pin) flag on a build. /// Set the `keep` (GC pin) flag on a build.
pub async fn set_keep( pub async fn set_keep(pool: &PgPool, id: Uuid, keep: bool) -> Result<Build> {
pool: &PgPool,
id: Uuid,
keep: bool,
) -> Result<Build> {
sqlx::query_as::<_, Build>( sqlx::query_as::<_, Build>(
"UPDATE builds SET keep = $1 WHERE id = $2 RETURNING *", "UPDATE builds SET keep = $1 WHERE id = $2 RETURNING *",
) )

View file

@ -77,8 +77,8 @@ pub async fn find_for_system(
) -> Result<Vec<RemoteBuilder>> { ) -> Result<Vec<RemoteBuilder>> {
sqlx::query_as::<_, RemoteBuilder>( sqlx::query_as::<_, RemoteBuilder>(
"SELECT * FROM remote_builders WHERE enabled = true AND $1 = ANY(systems) \ "SELECT * FROM remote_builders WHERE enabled = true AND $1 = ANY(systems) \
AND (disabled_until IS NULL OR disabled_until < NOW()) \ AND (disabled_until IS NULL OR disabled_until < NOW()) ORDER BY \
ORDER BY speed_factor DESC", speed_factor DESC",
) )
.bind(system) .bind(system)
.fetch_all(pool) .fetch_all(pool)
@ -92,13 +92,11 @@ pub async fn find_for_system(
/// Backoff formula (from Hydra): delta = 60 * 3^(min(failures, 4) - 1) seconds. /// Backoff formula (from Hydra): delta = 60 * 3^(min(failures, 4) - 1) seconds.
pub async fn record_failure(pool: &PgPool, id: Uuid) -> Result<RemoteBuilder> { pub async fn record_failure(pool: &PgPool, id: Uuid) -> Result<RemoteBuilder> {
sqlx::query_as::<_, RemoteBuilder>( sqlx::query_as::<_, RemoteBuilder>(
"UPDATE remote_builders SET \ "UPDATE remote_builders SET consecutive_failures = \
consecutive_failures = LEAST(consecutive_failures + 1, 4), \ LEAST(consecutive_failures + 1, 4), last_failure = NOW(), disabled_until \
last_failure = NOW(), \ = NOW() + make_interval(secs => 60.0 * power(3, \
disabled_until = NOW() + make_interval(secs => \ LEAST(consecutive_failures + 1, 4) - 1) + (random() * 30)::int ) WHERE \
60.0 * power(3, LEAST(consecutive_failures + 1, 4) - 1) + (random() * 30)::int \ id = $1 RETURNING *",
) \
WHERE id = $1 RETURNING *",
) )
.bind(id) .bind(id)
.fetch_optional(pool) .fetch_optional(pool)
@ -110,10 +108,8 @@ pub async fn record_failure(pool: &PgPool, id: Uuid) -> Result<RemoteBuilder> {
/// Resets consecutive_failures and clears disabled_until. /// Resets consecutive_failures and clears disabled_until.
pub async fn record_success(pool: &PgPool, id: Uuid) -> Result<RemoteBuilder> { pub async fn record_success(pool: &PgPool, id: Uuid) -> Result<RemoteBuilder> {
sqlx::query_as::<_, RemoteBuilder>( sqlx::query_as::<_, RemoteBuilder>(
"UPDATE remote_builders SET \ "UPDATE remote_builders SET consecutive_failures = 0, disabled_until = \
consecutive_failures = 0, \ NULL WHERE id = $1 RETURNING *",
disabled_until = NULL \
WHERE id = $1 RETURNING *",
) )
.bind(id) .bind(id)
.fetch_optional(pool) .fetch_optional(pool)