mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-02-16 18:47:57 -05:00
Add Get Schedules request handler (#646)
This commit is contained in:
@@ -607,7 +607,49 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent
|
|||||||
|
|
||||||
internal async Task HandleAgentSchedulesRequest(AgentSchedulesParams parameters, RequestContext<AgentSchedulesResult> requestContext)
|
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)
|
internal async Task HandleCreateAgentScheduleRequest(CreateAgentScheduleParams parameters, RequestContext<AgentScheduleResult> requestContext)
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent.Contracts
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class AgentScheduleInfo
|
public class AgentScheduleInfo
|
||||||
{
|
{
|
||||||
public int ID { get; set; }
|
public int Id { get; set; }
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
public string JobName { get; set; }
|
public string JobName { get; set; }
|
||||||
public bool IsEnabled { get; set; }
|
public bool IsEnabled { get; set; }
|
||||||
|
|||||||
@@ -18,6 +18,30 @@ namespace Microsoft.SqlTools.ServiceLayer.IntegrationTests.Agent
|
|||||||
{
|
{
|
||||||
public class AgentScheduleTests
|
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>
|
/// <summary>
|
||||||
/// TestHandleCreateAgentScheduleRequest
|
/// TestHandleCreateAgentScheduleRequest
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user