mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-02-17 02:51:45 -05:00
refactored query execution failure callback to take exception (#382)
This commit is contained in:
@@ -303,7 +303,7 @@ namespace Microsoft.SqlTools.ServiceLayer.EditData
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Setup callback for failed query execution
|
// Setup callback for failed query execution
|
||||||
Query.QueryAsyncEventHandler queryCompleteFailureCallback = q =>
|
Query.QueryAsyncErrorEventHandler queryCompleteFailureCallback = (q, e) =>
|
||||||
{
|
{
|
||||||
taskCompletion.SetResult(new EditSession.EditSessionQueryExecutionState(null));
|
taskCompletion.SetResult(new EditSession.EditSessionQueryExecutionState(null));
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
|
|||||||
@@ -158,7 +158,7 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution
|
|||||||
/// Delegate type for callback when a query connection fails
|
/// Delegate type for callback when a query connection fails
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="message">Error message for the failing query</param>
|
/// <param name="message">Error message for the failing query</param>
|
||||||
public delegate Task QueryAsyncErrorEventHandler(string message);
|
public delegate Task QueryAsyncErrorEventHandler(Query q, Exception e);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Callback for when the query has completed successfully
|
/// Callback for when the query has completed successfully
|
||||||
@@ -168,7 +168,7 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Callback for when the query has failed
|
/// Callback for when the query has failed
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public event QueryAsyncEventHandler QueryFailed;
|
public event QueryAsyncErrorEventHandler QueryFailed;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Event to be called when a resultset has completed.
|
/// Event to be called when a resultset has completed.
|
||||||
@@ -395,12 +395,12 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution
|
|||||||
await QueryCompleted(this);
|
await QueryCompleted(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
// Call the query failure callback
|
// Call the query failure callback
|
||||||
if (QueryFailed != null)
|
if (QueryFailed != null)
|
||||||
{
|
{
|
||||||
await QueryFailed(this);
|
await QueryFailed(this, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
|
|||||||
@@ -346,7 +346,7 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution
|
|||||||
Func<Query, Task<bool>> queryCreateSuccessFunc,
|
Func<Query, Task<bool>> queryCreateSuccessFunc,
|
||||||
Func<string, Task> queryCreateFailFunc,
|
Func<string, Task> queryCreateFailFunc,
|
||||||
Query.QueryAsyncEventHandler querySuccessFunc,
|
Query.QueryAsyncEventHandler querySuccessFunc,
|
||||||
Query.QueryAsyncEventHandler queryFailureFunc)
|
Query.QueryAsyncErrorEventHandler queryFailureFunc)
|
||||||
{
|
{
|
||||||
Validate.IsNotNull(nameof(executeParams), executeParams);
|
Validate.IsNotNull(nameof(executeParams), executeParams);
|
||||||
Validate.IsNotNull(nameof(queryEventSender), queryEventSender);
|
Validate.IsNotNull(nameof(queryEventSender), queryEventSender);
|
||||||
@@ -478,7 +478,7 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution
|
|||||||
private static void ExecuteAndCompleteQuery(string ownerUri, Query query,
|
private static void ExecuteAndCompleteQuery(string ownerUri, Query query,
|
||||||
IEventSender eventSender,
|
IEventSender eventSender,
|
||||||
Query.QueryAsyncEventHandler querySuccessCallback,
|
Query.QueryAsyncEventHandler querySuccessCallback,
|
||||||
Query.QueryAsyncEventHandler queryFailureCallback)
|
Query.QueryAsyncErrorEventHandler queryFailureCallback)
|
||||||
{
|
{
|
||||||
// Setup the callback to send the complete event
|
// Setup the callback to send the complete event
|
||||||
Query.QueryAsyncEventHandler completeCallback = async q =>
|
Query.QueryAsyncEventHandler completeCallback = async q =>
|
||||||
@@ -492,8 +492,21 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution
|
|||||||
|
|
||||||
await eventSender.SendEvent(QueryCompleteEvent.Type, eventParams);
|
await eventSender.SendEvent(QueryCompleteEvent.Type, eventParams);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Setup the callback to send the complete event
|
||||||
|
Query.QueryAsyncErrorEventHandler failureCallback = async (q, e) =>
|
||||||
|
{
|
||||||
|
// Send back the results
|
||||||
|
QueryCompleteParams eventParams = new QueryCompleteParams
|
||||||
|
{
|
||||||
|
OwnerUri = ownerUri,
|
||||||
|
BatchSummaries = q.BatchSummaries
|
||||||
|
};
|
||||||
|
|
||||||
|
await eventSender.SendEvent(QueryCompleteEvent.Type, eventParams);
|
||||||
|
};
|
||||||
query.QueryCompleted += completeCallback;
|
query.QueryCompleted += completeCallback;
|
||||||
query.QueryFailed += completeCallback;
|
query.QueryFailed += failureCallback;
|
||||||
|
|
||||||
// Add the callbacks that were provided by the caller
|
// Add the callbacks that were provided by the caller
|
||||||
// If they're null, that's no problem
|
// If they're null, that's no problem
|
||||||
|
|||||||
Reference in New Issue
Block a user