From 0ccb4b2d3b483cacd8f087ea97fb59d7bff9da9e Mon Sep 17 00:00:00 2001 From: Robert Wagner Date: Thu, 21 Dec 2017 16:45:48 +1000 Subject: [PATCH] Added support for the bulk delete packages endpoint. Closes https://github.com/OctopusDeploy/OctopusClients/issues/214 --- ...ublicSurfaceAreaShouldNotRegress..NETCore.approved.txt | 1 + ...SurfaceAreaShouldNotRegress..NETFramework.approved.txt | 2 ++ .../Async/BuiltInPackageRepositoryRepository.cs | 7 +++++++ .../Repositories/BuiltInPackageRepositoryRepository.cs | 8 +++++++- 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETCore.approved.txt b/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETCore.approved.txt index 00c2251a8..7ba5cce88 100644 --- a/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETCore.approved.txt +++ b/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETCore.approved.txt @@ -3784,6 +3784,7 @@ Octopus.Client.Repositories.Async interface IBuiltInPackageRepositoryRepository { Task DeletePackage(Octopus.Client.Model.PackageResource) + Task DeletePackages(IReadOnlyList) Task> LatestPackages(Int32, Int32) Task> ListPackages(String, Int32, Int32) Task PushPackage(String, Stream, Boolean) diff --git a/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETFramework.approved.txt b/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETFramework.approved.txt index 54e2e9d9b..f21362a4f 100644 --- a/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETFramework.approved.txt +++ b/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETFramework.approved.txt @@ -4197,6 +4197,7 @@ Octopus.Client.Repositories interface IBuiltInPackageRepositoryRepository { void DeletePackage(Octopus.Client.Model.PackageResource) + void DeletePackages(IReadOnlyList) Octopus.Client.Model.ResourceCollection LatestPackages(Int32, Int32) Octopus.Client.Model.ResourceCollection ListPackages(String, Int32, Int32) Octopus.Client.Model.PackageFromBuiltInFeedResource PushPackage(String, Stream, Boolean) @@ -4651,6 +4652,7 @@ Octopus.Client.Repositories.Async interface IBuiltInPackageRepositoryRepository { Task DeletePackage(Octopus.Client.Model.PackageResource) + Task DeletePackages(IReadOnlyList) Task> LatestPackages(Int32, Int32) Task> ListPackages(String, Int32, Int32) Task PushPackage(String, Stream, Boolean) diff --git a/source/Octopus.Client/Repositories/Async/BuiltInPackageRepositoryRepository.cs b/source/Octopus.Client/Repositories/Async/BuiltInPackageRepositoryRepository.cs index e2d783c20..bb834acd0 100644 --- a/source/Octopus.Client/Repositories/Async/BuiltInPackageRepositoryRepository.cs +++ b/source/Octopus.Client/Repositories/Async/BuiltInPackageRepositoryRepository.cs @@ -1,5 +1,7 @@ using System; +using System.Collections.Generic; using System.IO; +using System.Linq; using System.Threading.Tasks; using Octopus.Client.Model; @@ -11,6 +13,7 @@ public interface IBuiltInPackageRepositoryRepository Task> ListPackages(string packageId, int skip = 0, int take = 30); Task> LatestPackages(int skip = 0, int take = 30); Task DeletePackage(PackageResource package); + Task DeletePackages(IReadOnlyList packages); } class BuiltInPackageRepositoryRepository : IBuiltInPackageRepositoryRepository @@ -44,5 +47,9 @@ public Task DeletePackage(PackageResource package) { return client.Delete(client.RootDocument.Link("Packages"), new { id = package.Id }); } + + public Task DeletePackages(IReadOnlyList packages) + => client.Delete(client.RootDocument.Link("PackagesBulk"), new { ids = packages.Select(p => p.Id).ToArray() }); + } } diff --git a/source/Octopus.Client/Repositories/BuiltInPackageRepositoryRepository.cs b/source/Octopus.Client/Repositories/BuiltInPackageRepositoryRepository.cs index ab8175675..c399edd06 100644 --- a/source/Octopus.Client/Repositories/BuiltInPackageRepositoryRepository.cs +++ b/source/Octopus.Client/Repositories/BuiltInPackageRepositoryRepository.cs @@ -1,5 +1,7 @@ using System; +using System.Collections.Generic; using System.IO; +using System.Linq; using Octopus.Client.Model; namespace Octopus.Client.Repositories @@ -10,8 +12,9 @@ public interface IBuiltInPackageRepositoryRepository ResourceCollection ListPackages(string packageId, int skip = 0, int take = 30); ResourceCollection LatestPackages(int skip = 0, int take = 30); void DeletePackage(PackageResource package); + void DeletePackages(IReadOnlyList packages); } - + class BuiltInPackageRepositoryRepository : IBuiltInPackageRepositoryRepository { readonly IOctopusClient client; @@ -43,5 +46,8 @@ public void DeletePackage(PackageResource package) { client.Delete(client.RootDocument.Link("Packages"), new { id = package.Id }); } + + public void DeletePackages(IReadOnlyList packages) + => client.Delete(client.RootDocument.Link("PackagesBulk"), new { ids = packages.Select(p => p.Id).ToArray() }); } } \ No newline at end of file