diff --git a/CHANGELOG.md b/CHANGELOG.md index f1d3d53154fc37cd77f9d137988682087b3b8bf2..469c7ec7e1b4af71d60996fe22e758c3589ea4e8 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 8022008a7f9e5adff47bf5d36efd246edc252564..cdeac16f7b47c8bbb9766c7329eda0fd13f79fdd 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 b058ed165d3ac411237910e43fe29cbe3c1aeb08..3e2e1b77b697a3cf543544bd9b83b8df224d4b27 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");