diff --git a/src/BuildingBlocks/StackSdks/Masa.BuildingBlocks.StackSdks.Scheduler/Request/AddSchedulerJobRequest.cs b/src/BuildingBlocks/StackSdks/Masa.BuildingBlocks.StackSdks.Scheduler/Request/AddSchedulerJobRequest.cs index 89e971724..9c4603439 100644 --- a/src/BuildingBlocks/StackSdks/Masa.BuildingBlocks.StackSdks.Scheduler/Request/AddSchedulerJobRequest.cs +++ b/src/BuildingBlocks/StackSdks/Masa.BuildingBlocks.StackSdks.Scheduler/Request/AddSchedulerJobRequest.cs @@ -3,7 +3,7 @@ namespace Masa.BuildingBlocks.StackSdks.Scheduler.Request; -public class AddSchedulerJobRequest +public class UpsertSchedulerJobRequest { public string ProjectIdentity { get; set; } = string.Empty; diff --git a/src/BuildingBlocks/StackSdks/Masa.BuildingBlocks.StackSdks.Scheduler/Service/ISchedulerJobService.cs b/src/BuildingBlocks/StackSdks/Masa.BuildingBlocks.StackSdks.Scheduler/Service/ISchedulerJobService.cs index ed10569c4..aade692e1 100644 --- a/src/BuildingBlocks/StackSdks/Masa.BuildingBlocks.StackSdks.Scheduler/Service/ISchedulerJobService.cs +++ b/src/BuildingBlocks/StackSdks/Masa.BuildingBlocks.StackSdks.Scheduler/Service/ISchedulerJobService.cs @@ -5,7 +5,9 @@ namespace Masa.BuildingBlocks.StackSdks.Scheduler.Service; public interface ISchedulerJobService { - Task AddAsync(AddSchedulerJobRequest job); + Task AddAsync(UpsertSchedulerJobRequest job); + + Task UpdateAsync(Guid id, UpsertSchedulerJobRequest job); Task StartAsync(SchedulerJobRequestBase request); diff --git a/src/Contrib/StackSdks/Masa.Contrib.StackSdks.Scheduler/Services/SchedulerJobService.cs b/src/Contrib/StackSdks/Masa.Contrib.StackSdks.Scheduler/Services/SchedulerJobService.cs index 60e44d1cd..f50b3667c 100644 --- a/src/Contrib/StackSdks/Masa.Contrib.StackSdks.Scheduler/Services/SchedulerJobService.cs +++ b/src/Contrib/StackSdks/Masa.Contrib.StackSdks.Scheduler/Services/SchedulerJobService.cs @@ -14,28 +14,20 @@ public SchedulerJobService(ICaller caller) _caller = caller; } - public async Task AddAsync(AddSchedulerJobRequest request) + public async Task AddAsync(UpsertSchedulerJobRequest job) { - if (string.IsNullOrWhiteSpace(request.ProjectIdentity)) - { - throw new ArgumentNullException(nameof(request.ProjectIdentity)); - } + ValidateUpsertSchedulerJobRequest(job); - switch (request.JobType) - { - case JobTypes.JobApp: - ArgumentNullException.ThrowIfNull(request.JobAppConfig, nameof(request.JobAppConfig)); - break; - case JobTypes.Http: - ArgumentNullException.ThrowIfNull(request.HttpConfig, nameof(request.HttpConfig)); - break; - case JobTypes.DaprServiceInvocation: - ArgumentNullException.ThrowIfNull(request.DaprServiceInvocationConfig, nameof(request.DaprServiceInvocationConfig)); - break; - } - var requestUri = $"{API}/addSchedulerJobBySdk"; - return await _caller.PostAsync(requestUri, request); + return await _caller.PostAsync(requestUri, job); + } + + public async Task UpdateAsync(Guid id, UpsertSchedulerJobRequest job) + { + ValidateUpsertSchedulerJobRequest(job); + + var requestUri = $"{API}/{id}/updateSchedulerJobBySdk"; + await _caller.PutAsync(requestUri, job); } public async Task DisableAsync(SchedulerJobRequestBase request) @@ -83,4 +75,22 @@ public async Task StartAsync(SchedulerJobRequestBase request) await _caller.PutAsync(requestUri, request); return true; } + + private static void ValidateUpsertSchedulerJobRequest(UpsertSchedulerJobRequest job) + { + MasaArgumentException.ThrowIfNull(job.ProjectIdentity, nameof(job.ProjectIdentity)); + + switch (job.JobType) + { + case JobTypes.JobApp: + MasaArgumentException.ThrowIfNull(job.JobAppConfig, nameof(job.JobAppConfig)); + break; + case JobTypes.Http: + MasaArgumentException.ThrowIfNull(job.HttpConfig, nameof(job.HttpConfig)); + break; + case JobTypes.DaprServiceInvocation: + MasaArgumentException.ThrowIfNull(job.DaprServiceInvocationConfig, nameof(job.DaprServiceInvocationConfig)); + break; + } + } } diff --git a/src/Contrib/StackSdks/Tests/Masa.Contrib.StackSdks.Scheduler.Tests/SchedulerJobServiceTest.cs b/src/Contrib/StackSdks/Tests/Masa.Contrib.StackSdks.Scheduler.Tests/SchedulerJobServiceTest.cs index d81c54abb..8774d85e3 100644 --- a/src/Contrib/StackSdks/Tests/Masa.Contrib.StackSdks.Scheduler.Tests/SchedulerJobServiceTest.cs +++ b/src/Contrib/StackSdks/Tests/Masa.Contrib.StackSdks.Scheduler.Tests/SchedulerJobServiceTest.cs @@ -15,7 +15,7 @@ public class SchedulerJobServiceTest [TestMethod] public async Task TestAddSchedulerHttpJobAsync() { - var requestData = new AddSchedulerJobRequest() + var requestData = new UpsertSchedulerJobRequest() { Name = "TestJob", JobType = JobTypes.Http, @@ -51,10 +51,10 @@ public async Task TestAddSchedulerHttpJobAsync() var requestUri = $"{API}/addSchedulerJobBySdk"; var caller = new Mock(); - caller.Setup(provider => provider.PostAsync(requestUri, requestData, default)).ReturnsAsync(Guid.NewGuid()).Verifiable(); + caller.Setup(provider => provider.PostAsync(requestUri, requestData, default)).ReturnsAsync(Guid.NewGuid()).Verifiable(); var schedulerClient = new SchedulerClient(caller.Object); var result = await schedulerClient.SchedulerJobService.AddAsync(requestData); - caller.Verify(provider => provider.PostAsync(requestUri, requestData, default), Times.Once); + caller.Verify(provider => provider.PostAsync(requestUri, requestData, default), Times.Once); Assert.AreNotEqual(Guid.Empty, result); } @@ -62,7 +62,7 @@ public async Task TestAddSchedulerHttpJobAsync() [TestMethod] public async Task TestAddSchedulerJobApp() { - var requestData = new AddSchedulerJobRequest() + var requestData = new UpsertSchedulerJobRequest() { Name = "TestJob", JobType = JobTypes.JobApp, @@ -90,10 +90,10 @@ public async Task TestAddSchedulerJobApp() var requestUri = $"{API}/addSchedulerJobBySdk"; var caller = new Mock(); - caller.Setup(provider => provider.PostAsync(requestUri, requestData, default)).ReturnsAsync(Guid.NewGuid()).Verifiable(); + caller.Setup(provider => provider.PostAsync(requestUri, requestData, default)).ReturnsAsync(Guid.NewGuid()).Verifiable(); var schedulerClient = new SchedulerClient(caller.Object); var result = await schedulerClient.SchedulerJobService.AddAsync(requestData); - caller.Verify(provider => provider.PostAsync(requestUri, requestData, default), Times.Once); + caller.Verify(provider => provider.PostAsync(requestUri, requestData, default), Times.Once); Assert.AreNotEqual(Guid.Empty, result); } @@ -101,7 +101,7 @@ public async Task TestAddSchedulerJobApp() [TestMethod] public async Task TestAddSchedulerDaprServiceInvocationJob() { - var requestData = new AddSchedulerJobRequest() + var requestData = new UpsertSchedulerJobRequest() { Name = "TestJob", JobType = JobTypes.DaprServiceInvocation, @@ -128,10 +128,10 @@ public async Task TestAddSchedulerDaprServiceInvocationJob() var requestUri = $"{API}/addSchedulerJobBySdk"; var caller = new Mock(); - caller.Setup(provider => provider.PostAsync(requestUri, requestData, default)).ReturnsAsync(Guid.NewGuid()).Verifiable(); + caller.Setup(provider => provider.PostAsync(requestUri, requestData, default)).ReturnsAsync(Guid.NewGuid()).Verifiable(); var schedulerClient = new SchedulerClient(caller.Object); var result = await schedulerClient.SchedulerJobService.AddAsync(requestData); - caller.Verify(provider => provider.PostAsync(requestUri, requestData, default), Times.Once); + caller.Verify(provider => provider.PostAsync(requestUri, requestData, default), Times.Once); Assert.AreNotEqual(Guid.Empty, result); } @@ -139,42 +139,26 @@ public async Task TestAddSchedulerDaprServiceInvocationJob() [TestMethod] public async Task TestAddSchedulerJobArgumentNullException() { - var requestData = new AddSchedulerJobRequest() + var requestData = new UpsertSchedulerJobRequest() { Name = "TestJob", JobType = JobTypes.Http, CronExpression = "", JobIdentity = "masa-mc-sync-job", - HttpConfig = new SchedulerJobHttpConfig() - { - RequestUrl = "www.baidu.com", - HttpVerifyType = HttpVerifyTypes.CustomStatusCode, - HttpBody = "", - HttpHeaders = new List>() - { - new KeyValuePair("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36") - }, - HttpMethod = HttpMethods.GET, - VerifyContent = "200", - HttpParameters = new List>() - { - new KeyValuePair("ie", "utf-8"), - } - }, OperatorId = Guid.NewGuid() }; var requestUri = $"{API}/addSchedulerJobBySdk"; var caller = new Mock(); - caller.Setup(provider => provider.PostAsync(requestUri, requestData, default)).ReturnsAsync(Guid.NewGuid()).Verifiable(); + caller.Setup(provider => provider.PostAsync(requestUri, requestData, default)).ReturnsAsync(Guid.NewGuid()).Verifiable(); var schedulerClient = new SchedulerClient(caller.Object); - await Assert.ThrowsExceptionAsync(async () => await schedulerClient.SchedulerJobService.AddAsync(requestData)); + await Assert.ThrowsExceptionAsync(async () => await schedulerClient.SchedulerJobService.AddAsync(requestData)); } [TestMethod] public async Task TestAddSchedulerHttpJobArgumentNullException() { - var requestData = new AddSchedulerJobRequest() + var requestData = new UpsertSchedulerJobRequest() { Name = "TestJob", JobType = JobTypes.Http, @@ -184,15 +168,15 @@ public async Task TestAddSchedulerHttpJobArgumentNullException() var requestUri = $"{API}/addSchedulerJobBySdk"; var caller = new Mock(); - caller.Setup(provider => provider.PostAsync(requestUri, requestData, default)).ReturnsAsync(Guid.NewGuid()).Verifiable(); + caller.Setup(provider => provider.PostAsync(requestUri, requestData, default)).ReturnsAsync(Guid.NewGuid()).Verifiable(); var schedulerClient = new SchedulerClient(caller.Object); - await Assert.ThrowsExceptionAsync(async () => await schedulerClient.SchedulerJobService.AddAsync(requestData)); + await Assert.ThrowsExceptionAsync(async () => await schedulerClient.SchedulerJobService.AddAsync(requestData)); } [TestMethod] public async Task TestAddSchedulerJobAppArgumentNullException() { - var requestData = new AddSchedulerJobRequest() + var requestData = new UpsertSchedulerJobRequest() { Name = "TestJob", JobType = JobTypes.JobApp, @@ -202,15 +186,15 @@ public async Task TestAddSchedulerJobAppArgumentNullException() var requestUri = $"{API}/addSchedulerJobBySdk"; var caller = new Mock(); - caller.Setup(provider => provider.PostAsync(requestUri, requestData, default)).ReturnsAsync(Guid.NewGuid()).Verifiable(); + caller.Setup(provider => provider.PostAsync(requestUri, requestData, default)).ReturnsAsync(Guid.NewGuid()).Verifiable(); var schedulerClient = new SchedulerClient(caller.Object); - await Assert.ThrowsExceptionAsync(async () => await schedulerClient.SchedulerJobService.AddAsync(requestData)); + await Assert.ThrowsExceptionAsync(async () => await schedulerClient.SchedulerJobService.AddAsync(requestData)); } [TestMethod] public async Task TestAddSchedulerDaprInvocationJobArgumentNullException() { - var requestData = new AddSchedulerJobRequest() + var requestData = new UpsertSchedulerJobRequest() { Name = "TestJob", JobType = JobTypes.DaprServiceInvocation, @@ -220,9 +204,9 @@ public async Task TestAddSchedulerDaprInvocationJobArgumentNullException() var requestUri = $"{API}/addSchedulerJobBySdk"; var caller = new Mock(); - caller.Setup(provider => provider.PostAsync(requestUri, requestData, default)).ReturnsAsync(Guid.NewGuid()).Verifiable(); + caller.Setup(provider => provider.PostAsync(requestUri, requestData, default)).ReturnsAsync(Guid.NewGuid()).Verifiable(); var schedulerClient = new SchedulerClient(caller.Object); - await Assert.ThrowsExceptionAsync(async () => await schedulerClient.SchedulerJobService.AddAsync(requestData)); + await Assert.ThrowsExceptionAsync(async () => await schedulerClient.SchedulerJobService.AddAsync(requestData)); } [TestMethod]