Add Get Schedules request handler (#646)

This commit is contained in:
Karl Burtram
2018-06-27 08:25:19 -07:00
committed by GitHub
parent b71f4fec27
commit c6906c3b66
3 changed files with 68 additions and 2 deletions

View File

@@ -607,7 +607,49 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent
internal async Task HandleAgentSchedulesRequest(AgentSchedulesParams parameters, RequestContext<AgentSchedulesResult> requestContext)
{
await requestContext.SendResult(null);
await Task.Run(async () =>
{
var result = new AgentSchedulesResult();
try
{
ConnectionInfo connInfo;
ConnectionServiceInstance.TryFindConnection(parameters.OwnerUri, out connInfo);
CDataContainer dataContainer = CDataContainer.CreateDataContainer(connInfo, databaseExists: true);
int scheduleCount = dataContainer.Server.JobServer.SharedSchedules.Count;
var schedules = new AgentScheduleInfo[scheduleCount];
for (int i = 0; i < scheduleCount; ++i)
{
var schedule = dataContainer.Server.JobServer.SharedSchedules[i];
schedules[i] = new AgentScheduleInfo();
schedules[i].Id = schedule.ID;
schedules[i].Name = schedule.Name;
schedules[i].IsEnabled = schedule.IsEnabled;
schedules[i].FrequencyTypes = (Contracts.FrequencyTypes)schedule.FrequencyTypes;
schedules[i].FrequencySubDayTypes = (Contracts.FrequencySubDayTypes)schedule.FrequencySubDayTypes;
schedules[i].FrequencySubDayInterval = schedule.FrequencySubDayInterval;
schedules[i].FrequencyRelativeIntervals = (Contracts.FrequencyRelativeIntervals)schedule.FrequencyRelativeIntervals;
schedules[i].FrequencyRecurrenceFactor = schedule.FrequencyRecurrenceFactor;
schedules[i].FrequencyInterval = schedule.FrequencyInterval;
schedules[i].DateCreated = schedule.DateCreated;
schedules[i].ActiveStartTimeOfDay = schedule.ActiveStartTimeOfDay;
schedules[i].ActiveStartDate = schedule.ActiveStartDate;
schedules[i].ActiveEndTimeOfDay = schedule.ActiveEndTimeOfDay;
schedules[i].JobCount = schedule.JobCount;
schedules[i].ActiveEndDate = schedule.ActiveEndDate;
schedules[i].ScheduleUid = schedule.ScheduleUid;
}
result.Schedules = schedules;
result.Success = true;
}
catch (Exception ex)
{
result.Success = false;
result.ErrorMessage = ex.ToString();
}
await requestContext.SendResult(result);
});
}
internal async Task HandleCreateAgentScheduleRequest(CreateAgentScheduleParams parameters, RequestContext<AgentScheduleResult> requestContext)

View File

@@ -47,7 +47,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent.Contracts
/// </summary>
public class AgentScheduleInfo
{
public int ID { get; set; }
public int Id { get; set; }
public string Name { get; set; }
public string JobName { get; set; }
public bool IsEnabled { get; set; }

View File

@@ -18,6 +18,30 @@ namespace Microsoft.SqlTools.ServiceLayer.IntegrationTests.Agent
{
public class AgentScheduleTests
{
/// <summary>
/// HandleAgentSchedulesRequest
/// </summary>
[Fact]
public async Task HandleAgentSchedulesRequest()
{
using (SelfCleaningTempFile queryTempFile = new SelfCleaningTempFile())
{
// setup
var connectionResult = await LiveConnectionHelper.InitLiveConnectionInfoAsync("master", queryTempFile.FilePath);
var service = new AgentService();
// test
var context = new Mock<RequestContext<AgentSchedulesResult>>();
await service.HandleAgentSchedulesRequest(new AgentSchedulesParams
{
OwnerUri = connectionResult.ConnectionInfo.OwnerUri
}, context.Object);
context.VerifyAll();
}
}
/// <summary>
/// TestHandleCreateAgentScheduleRequest
/// </summary>