From 341d889f1064199b7a0fe31703dea518c8aef8e4 Mon Sep 17 00:00:00 2001 From: Ben Boeckel <ben.boeckel@kitware.com> Date: Mon, 17 Mar 2025 19:31:53 +0100 Subject: [PATCH] api/projects/runners: support project names for enable/disable --- CHANGELOG.md | 9 +++++++++ src/api/projects/runners/disable.rs | 14 ++++++++------ src/api/projects/runners/enable.rs | 14 ++++++++------ 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f1d3d531..469c7ec7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +# v0.1709.3 (unreleased) + +## Changes + + * `DisableProjectRunner` and `EnableProjectRunner` now accept project names + as well. A slight break as the types are now lifetime-aware, but this only + affects code that needed to name the endpoint types across an API boundary + (which should be rare). + # v0.1709.2 ## Changes diff --git a/src/api/projects/runners/disable.rs b/src/api/projects/runners/disable.rs index 8022008a..cdeac16f 100644 --- a/src/api/projects/runners/disable.rs +++ b/src/api/projects/runners/disable.rs @@ -6,25 +6,27 @@ use derive_builder::Builder; +use crate::api::common::NameOrId; use crate::api::endpoint_prelude::*; /// Disable a runner on a project. #[derive(Debug, Builder, Clone)] -pub struct DisableProjectRunner { +pub struct DisableProjectRunner<'a> { /// The ID or URL-encoded path of the project. - project: u64, + #[builder(setter(into))] + project: NameOrId<'a>, /// The ID of the runner. runner: u64, } -impl DisableProjectRunner { +impl<'a> DisableProjectRunner<'a> { /// Create a builder for the endpoint. - pub fn builder() -> DisableProjectRunnerBuilder { + pub fn builder() -> DisableProjectRunnerBuilder<'a> { DisableProjectRunnerBuilder::default() } } -impl Endpoint for DisableProjectRunner { +impl Endpoint for DisableProjectRunner<'_> { fn method(&self) -> Method { Method::DELETE } @@ -60,7 +62,7 @@ mod tests { #[test] fn runner_is_required() { let err = DisableProjectRunner::builder() - .project(1) + .project("project/example") .build() .unwrap_err(); crate::test::assert_missing_field!(err, DisableProjectRunnerBuilderError, "runner"); diff --git a/src/api/projects/runners/enable.rs b/src/api/projects/runners/enable.rs index b058ed16..3e2e1b77 100644 --- a/src/api/projects/runners/enable.rs +++ b/src/api/projects/runners/enable.rs @@ -6,25 +6,27 @@ use derive_builder::Builder; +use crate::api::common::NameOrId; use crate::api::endpoint_prelude::*; /// Enable a runner on a project. #[derive(Debug, Builder, Clone)] -pub struct EnableProjectRunner { +pub struct EnableProjectRunner<'a> { /// The ID or URL-encoded path of the project. - project: u64, + #[builder(setter(into))] + project: NameOrId<'a>, /// The ID of the runner. runner: u64, } -impl EnableProjectRunner { +impl<'a> EnableProjectRunner<'a> { /// Create a builder for the endpoint. - pub fn builder() -> EnableProjectRunnerBuilder { + pub fn builder() -> EnableProjectRunnerBuilder<'a> { EnableProjectRunnerBuilder::default() } } -impl Endpoint for EnableProjectRunner { +impl Endpoint for EnableProjectRunner<'_> { fn method(&self) -> Method { Method::POST } @@ -68,7 +70,7 @@ mod tests { #[test] fn runner_is_required() { let err = EnableProjectRunner::builder() - .project(1) + .project("project/example") .build() .unwrap_err(); crate::test::assert_missing_field!(err, EnableProjectRunnerBuilderError, "runner"); -- GitLab