in src/main.ts [351:678]
protected registerProvider(options: undefined): Disposable {
const client = this._client;
let runQuery = (ownerUri: string, querySelection: azdata.ISelectionData, executionPlanOptions?: azdata.ExecutionPlanOptions): Thenable<void> => {
let params: types.QueryExecuteParams = {
ownerUri,
querySelection,
executionPlanOptions: client.sqlc2p.asExecutionPlanOptions(executionPlanOptions)
};
return client.sendRequest(protocol.QueryExecuteRequest.type, params).then(
r => undefined,
e => {
client.logFailedRequest(protocol.QueryExecuteRequest.type, e);
return Promise.reject(e);
}
);
};
let cancelQuery = (ownerUri: string): Thenable<azdata.QueryCancelResult> => {
let params: protocol.QueryCancelParams = { ownerUri };
return client.sendRequest(protocol.QueryCancelRequest.type, params).then(
r => r,
e => {
client.logFailedRequest(protocol.QueryCancelRequest.type, e);
return Promise.reject(e);
}
);
};
let runQueryStatement = (ownerUri: string, line: number, column: number): Thenable<void> => {
let params: protocol.QueryExecuteStatementParams = {
ownerUri,
line,
column
};
return client.sendRequest(protocol.QueryExecuteStatementRequest.type, params).then(
r => undefined,
e => {
client.logFailedRequest(protocol.QueryExecuteStatementRequest.type, e);
return Promise.reject(e);
}
);
};
let runQueryString = (ownerUri: string, query: string): Thenable<void> => {
let params: protocol.QueryExecuteStringParams = { ownerUri, query };
return client.sendRequest(protocol.QueryExecuteStringRequest.type, params).then(
r => undefined,
e => {
client.logFailedRequest(protocol.QueryExecuteStringRequest.type, e);
return Promise.reject(e);
}
);
};
let runQueryAndReturn = (ownerUri: string, queryString: string): Thenable<azdata.SimpleExecuteResult> => {
let params: azdata.SimpleExecuteParams = { ownerUri, queryString };
return client.sendRequest(protocol.SimpleExecuteRequest.type, params).then(
r => r,
e => {
client.logFailedRequest(protocol.SimpleExecuteRequest.type, e);
return Promise.reject(e);
}
);
};
let parseSyntax = (ownerUri: string, query: string): Thenable<azdata.SyntaxParseResult> => {
let params: azdata.SyntaxParseParams = { ownerUri, query };
return client.sendRequest(protocol.SyntaxParseRequest.type, params).then(
r => r,
e => {
client.logFailedRequest(protocol.SyntaxParseRequest.type, e);
return Promise.reject(e);
}
);
};
let getQueryRows = (rowData: azdata.QueryExecuteSubsetParams): Thenable<azdata.QueryExecuteSubsetResult> => {
return client.sendRequest(protocol.QueryExecuteSubsetRequest.type, rowData).then(
r => r,
e => {
client.logFailedRequest(protocol.QueryExecuteSubsetRequest.type, e);
return Promise.reject(e);
}
);
};
let disposeQuery = (ownerUri: string): Thenable<void> => {
let params: protocol.QueryDisposeParams = { ownerUri };
return client.sendRequest(protocol.QueryDisposeRequest.type, params).then(
r => undefined,
e => {
client.logFailedRequest(protocol.QueryDisposeRequest.type, e);
return Promise.reject(e);
}
);
};
let connectionUriChanged = (newOwnerUri: string, originalOwnerUri: string): Thenable<void> => {
let params: protocol.ConnectionUriChangedParams = {
newOwnerUri,
originalOwnerUri
};
client.sendNotification(protocol.ConnectionUriChangedNotification.type, params);
return Promise.resolve();
};
let registerOnQueryComplete = (handler: (result: azdata.QueryExecuteCompleteNotificationResult) => any): void => {
client.onNotification(protocol.QueryExecuteCompleteNotification.type, handler);
};
let registerOnBatchStart = (handler: (batchInfo: azdata.QueryExecuteBatchNotificationParams) => any): void => {
client.onNotification(protocol.QueryExecuteBatchStartNotification.type, handler);
};
let registerOnBatchComplete = (handler: (batchInfo: azdata.QueryExecuteBatchNotificationParams) => any): void => {
client.onNotification(protocol.QueryExecuteBatchCompleteNotification.type, handler);
};
let registerOnResultSetAvailable = (handler: (resultSetInfo: azdata.QueryExecuteResultSetNotificationParams) => any): void => {
client.onNotification(protocol.QueryExecuteResultSetAvailableNotification.type, handler);
};
let registerOnResultSetUpdated = (handler: (resultSetInfo: azdata.QueryExecuteResultSetNotificationParams) => any): void => {
client.onNotification(protocol.QueryExecuteResultSetUpdatedNotification.type, handler);
};
let registerOnMessage = (handler: (message: azdata.QueryExecuteMessageParams) => any): void => {
client.onNotification(protocol.QueryExecuteMessageNotification.type, handler);
};
let saveResults = (requestParams: azdata.SaveResultsRequestParams): Thenable<azdata.SaveResultRequestResult> => {
switch (requestParams.resultFormat) {
case 'csv':
return client.sendRequest(protocol.SaveResultsAsCsvRequest.type, requestParams).then(
undefined,
e => {
client.logFailedRequest(protocol.SaveResultsAsCsvRequest.type, e);
return Promise.reject(e);
}
);
case 'json':
return client.sendRequest(protocol.SaveResultsAsJsonRequest.type, requestParams).then(
undefined,
e => {
client.logFailedRequest(protocol.SaveResultsAsJsonRequest.type, e);
return Promise.reject(e);
}
);
case 'excel':
return client.sendRequest(protocol.SaveResultsAsExcelRequest.type, requestParams).then(
undefined,
e => {
client.logFailedRequest(protocol.SaveResultsAsExcelRequest.type, e);
return Promise.reject(e);
}
);
case 'xml':
return client.sendRequest(protocol.SaveResultsAsXmlRequest.type, requestParams).then(
undefined,
e => {
client.logFailedRequest(protocol.SaveResultsAsXmlRequest.type, e);
return Promise.reject(e);
}
);
default:
return Promise.reject('unsupported format');
}
};
let setQueryExecutionOptions = (ownerUri: string, queryExecutionOptions: azdata.QueryExecutionOptions): Thenable<void> => {
let params: types.QueryExecutionOptionsParams = {
ownerUri: ownerUri,
options: queryExecutionOptions
};
return client.sendRequest(protocol.QueryExecutionOptionsRequest.type, params).then(
r => undefined,
e => {
client.logFailedRequest(protocol.QueryExecutionOptionsRequest.type, e);
return Promise.reject(e);
}
);
};
// Edit Data Requests
let commitEdit = (ownerUri: string): Thenable<void> => {
let params: azdata.EditCommitParams = { ownerUri };
return client.sendRequest(protocol.EditCommitRequest.type, params).then(
r => undefined,
e => {
client.logFailedRequest(protocol.EditCommitRequest.type, e);
return Promise.reject(e);
}
);
};
let createRow = (ownerUri: string): Thenable<azdata.EditCreateRowResult> => {
let params: azdata.EditCreateRowParams = { ownerUri: ownerUri };
return client.sendRequest(protocol.EditCreateRowRequest.type, params).then(
r => r,
e => {
client.logFailedRequest(protocol.EditCreateRowRequest.type, e);
return Promise.reject(e);
}
);
};
let deleteRow = (ownerUri: string, rowId: number): Thenable<void> => {
let params: azdata.EditDeleteRowParams = { ownerUri, rowId };
return client.sendRequest(protocol.EditDeleteRowRequest.type, params).then(
r => undefined,
e => {
client.logFailedRequest(protocol.EditDeleteRowRequest.type, e);
return Promise.reject(e);
}
);
};
let disposeEdit = (ownerUri: string): Thenable<void> => {
let params: azdata.EditDisposeParams = { ownerUri };
return client.sendRequest(protocol.EditDisposeRequest.type, params).then(
r => undefined,
e => {
client.logFailedRequest(protocol.EditDisposeRequest.type, e);
return Promise.reject(e);
}
);
};
let initializeEdit = (
ownerUri: string,
schemaName: string,
objectName: string,
objectType: string,
LimitResults: number,
queryString: string): Thenable<void> => {
let filters: azdata.EditInitializeFiltering = { LimitResults };
let params: azdata.EditInitializeParams = { ownerUri, schemaName, objectName, objectType, filters, queryString };
return client.sendRequest(protocol.EditInitializeRequest.type, params).then(
r => undefined,
e => {
client.logFailedRequest(protocol.EditInitializeRequest.type, e);
return Promise.reject(e);
}
);
};
let revertCell = (ownerUri: string, rowId: number, columnId: number): Thenable<azdata.EditRevertCellResult> => {
let params: azdata.EditRevertCellParams = { ownerUri, rowId, columnId };
return client.sendRequest(protocol.EditRevertCellRequest.type, params).then(
r => r,
e => {
client.logFailedRequest(protocol.EditRevertCellRequest.type, e);
return Promise.reject(e);
}
);
};
let revertRow = (ownerUri: string, rowId: number): Thenable<void> => {
let params: azdata.EditRevertRowParams = { ownerUri, rowId };
return client.sendRequest(protocol.EditRevertRowRequest.type, params).then(
r => undefined,
e => {
client.logFailedRequest(protocol.EditRevertRowRequest.type, e);
return Promise.reject(e);
}
);
};
let updateCell = (ownerUri: string, rowId: number, columnId: number, newValue: string): Thenable<azdata.EditUpdateCellResult> => {
let params: azdata.EditUpdateCellParams = { ownerUri, rowId, columnId, newValue };
return client.sendRequest(protocol.EditUpdateCellRequest.type, params).then(
r => r,
e => {
client.logFailedRequest(protocol.EditUpdateCellRequest.type, e);
return Promise.reject(e);
}
);
};
let getEditRows = (rowData: azdata.EditSubsetParams): Thenable<azdata.EditSubsetResult> => {
return client.sendRequest(protocol.EditSubsetRequest.type, rowData).then(
r => r,
e => {
client.logFailedRequest(protocol.EditSubsetRequest.type, e);
return Promise.reject(e);
}
);
};
// Edit Data Event Handlers
let registerOnEditSessionReady = (handler: (ownerUri: string, success: boolean, message: string) => any): void => {
client.onNotification(protocol.EditSessionReadyNotification.type, (params: azdata.EditSessionReadyParams) => {
handler(params.ownerUri, params.success, params.message);
});
};
return azdata.dataprotocol.registerQueryProvider({
providerId: client.providerId,
cancelQuery,
commitEdit,
createRow,
deleteRow,
disposeEdit,
disposeQuery,
connectionUriChanged,
getEditRows,
getQueryRows,
setQueryExecutionOptions,
initializeEdit,
registerOnBatchComplete,
registerOnBatchStart,
registerOnEditSessionReady,
registerOnMessage,
registerOnQueryComplete,
registerOnResultSetAvailable,
registerOnResultSetUpdated,
revertCell,
revertRow,
runQuery,
runQueryAndReturn,
parseSyntax,
runQueryStatement,
runQueryString,
saveResults,
updateCell
});
}