From c6631cf67c821b34c4974a79d07215bfc296372d Mon Sep 17 00:00:00 2001 From: Aasim Khan Date: Fri, 6 Sep 2019 16:54:37 -0700 Subject: [PATCH] Feat/notebookendpoints (#862) * Added endpoint for fetching all notebook jobs * Refractored NotebookJobInfo to AgentNotebookInfo to make it more consistent with the rest of the codebase * Added Notebook History endpoint in contracts. * Added Create, Update, Delete notebook endpoints. Also added separate fetch template, materialized notebook endpoints. This will make the Notebook Request and Notebook History responses lighter. * AgentNotebookInfo is now derived from AgentJobInfo * added fetch noteook history endpoint * Added fetching materialized notebook endpoint * Added code for cleaning up the directory * Added create notebook api * Added Update and delete notebook job * Fixed notebook history API * Added last run info to the script and template folder * Added execute database feature for notebook Jobs * SQL commands are now using sqlparameters to prevent any injection attacks * Changed rundate and runtime to string to preserve leading zeros * integration test for agentnotebooks api * Made some changes mentioned in PR * Refactored the code, removed enpoint logic from the notebook handler and wrote test cases * changes select statements, fixed a bug in the test job cleanup and fixed other stuff mentioned in the PR. * added notebook_error column in notebook history select statement * Added get template notebook endpoint * Added renaming and pinning notebook runs * made tables names caps to handle servers with case sensitive queries * made some changes to the enpoint points paths * Added delete materialized notebooks endpoints * Fixed a bug in delete, rename and pin apis where requests from multiple clients with materializedID = 0 could have resulted in multiple rows getting created on notebooks.nb_materialized table. * fixed a merge conflict * Made some changes mentioned in the PR * modified a query to handle space sensitive databases * Made some changes mentioned in the PR * fixed a small query bug --- .../Agent/AgentService.cs | 2 +- .../Agent/Contracts/AgentNotebookRequest.cs | 24 +++++++++---------- .../Agent/Jobs/AgentNotebookHelper.cs | 7 ++---- 3 files changed, 15 insertions(+), 18 deletions(-) diff --git a/src/Microsoft.SqlTools.ServiceLayer/Agent/AgentService.cs b/src/Microsoft.SqlTools.ServiceLayer/Agent/AgentService.cs index c94c60a7..6f824146 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/Agent/AgentService.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/Agent/AgentService.cs @@ -1470,7 +1470,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent }); } - internal async Task HandleDeleteNotebookMaterializedRequest(DeleteNotebookMaterializedParams parameters, RequestContext requestContext) + internal async Task HandleDeleteNotebookMaterializedRequest(DeleteMaterializedNotebookParams parameters, RequestContext requestContext) { await Task.Run(async () => { diff --git a/src/Microsoft.SqlTools.ServiceLayer/Agent/Contracts/AgentNotebookRequest.cs b/src/Microsoft.SqlTools.ServiceLayer/Agent/Contracts/AgentNotebookRequest.cs index cf0fb025..349008db 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/Agent/Contracts/AgentNotebookRequest.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/Agent/Contracts/AgentNotebookRequest.cs @@ -214,7 +214,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent.Contracts } /// - /// SQL Agent Notebook templates params + /// SQL Agent Notebook name update params /// public class UpdateAgentNotebookRunNameParams : TaskRequestDetails { @@ -226,7 +226,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent.Contracts } /// - /// SQL Agent Notebook templates request type + /// SQL Agent Notebook name update request type /// public class UpdateAgentNotebookRunNameRequest { @@ -236,7 +236,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent.Contracts } /// - /// SQL Agent Notebook templates params + /// SQL Agent Notebook name update params /// public class UpdateAgentNotebookRunPinParams : TaskRequestDetails { @@ -248,7 +248,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent.Contracts } /// - /// SQL Agent Notebook templates request type + /// SQL Agent Notebook pin request type /// public class UpdateAgentNotebookRunPinRequest { @@ -258,9 +258,9 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent.Contracts } /// - /// SQL Agent Notebook materialized params + /// SQL Agent Notebook pin params /// - public class DeleteNotebookMaterializedParams : TaskRequestDetails + public class DeleteMaterializedNotebookParams : TaskRequestDetails { public string OwnerUri { get; set; } public string TargetDatabase { get; set; } @@ -268,20 +268,20 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent.Contracts } /// - /// SQL Agent Notebook materialized result + /// SQL Agent delete Notebook materialized result /// - public class DeleteNotebookMaterializedResult : ResultStatus + public class DeleteMaterializedNotebookResult : ResultStatus { - public string NotebookMaterialized { get; set; } + public string MaterializedNotebook { get; set; } } /// - /// SQL Agent Notebook materialized request type + /// SQL Agent delete materialized request type /// public class DeleteNotebookMaterializedRequest { public static readonly - RequestType Type = - RequestType.Create("agent/deletenotebookmaterialized"); + RequestType Type = + RequestType.Create("agent/deletematerializednotebook"); } } \ No newline at end of file diff --git a/src/Microsoft.SqlTools.ServiceLayer/Agent/Jobs/AgentNotebookHelper.cs b/src/Microsoft.SqlTools.ServiceLayer/Agent/Jobs/AgentNotebookHelper.cs index 30cb02e7..24923f30 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/Agent/Jobs/AgentNotebookHelper.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/Agent/Jobs/AgentNotebookHelper.cs @@ -199,8 +199,6 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent connInfo, notebook.JobId, notebook.TargetDatabase); - - } internal static async Task UpdateNotebook( @@ -241,7 +239,6 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent templatePath, notebook.ExecuteDatabase, notebook.TargetDatabase); - } /// @@ -269,7 +266,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent is_deleted FROM notebooks.nb_materialized - WHERE JOB_ID = @jobId"; + WHERE job_id = @jobId"; List getNotebookHistoryQueryParams = new List(); getNotebookHistoryQueryParams.Add(new SqlParameter("jobId", JobId)); DataSet notebookHistoriesDataSet = @@ -672,7 +669,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent UPDATE notebooks.nb_materialized SET is_deleted = 1, notebook = '', - notebook_error = '', + notebook_error = '' WHERE job_id = @jobId AND run_time = @startTime AND run_date = @startDate END