in src/main.ts [160:300]
protected registerProvider(options: undefined): Disposable {
const client = this._client;
let connect = (connUri: string, connInfo: azdata.ConnectionInfo): Thenable<boolean> => {
return client.sendRequest(protocol.ConnectionRequest.type, client.sqlc2p.asConnectionParams(connUri, connInfo)).then(
r => r,
e => {
client.logFailedRequest(protocol.ConnectionRequest.type, e);
return Promise.resolve(false);
}
);
};
let disconnect = (ownerUri: string): Thenable<boolean> => {
let params: protocol.DisconnectParams = {
ownerUri
};
return client.sendRequest(protocol.DisconnectRequest.type, params).then(
r => r,
e => {
client.logFailedRequest(protocol.DisconnectRequest.type, e);
return Promise.resolve(false);
}
);
};
let cancelConnect = (ownerUri: string): Thenable<boolean> => {
let params: protocol.CancelConnectParams = {
ownerUri
};
return client.sendRequest(protocol.CancelConnectRequest.type, params).then(
r => r,
e => {
client.logFailedRequest(protocol.CancelConnectRequest.type, e);
return Promise.resolve(false);
}
);
};
let changeDatabase = (ownerUri: string, newDatabase: string): Thenable<boolean> => {
let params: protocol.ChangeDatabaseParams = {
ownerUri,
newDatabase
};
return client.sendRequest(protocol.ChangeDatabaseRequest.type, params).then(
r => r,
e => {
client.logFailedRequest(protocol.ChangeDatabaseRequest.type, e);
return Promise.resolve(false);
}
);
};
let listDatabases = (ownerUri: string): Thenable<azdata.ListDatabasesResult> => {
let params: protocol.ListDatabasesParams = {
ownerUri
};
return client.sendRequest(protocol.ListDatabasesRequest.type, params).then(
r => r,
e => {
client.logFailedRequest(protocol.ListDatabasesRequest.type, e);
return Promise.resolve(undefined);
}
);
};
let getConnectionString = (ownerUri: string, includePassword: boolean): Thenable<string> => {
let params: protocol.GetConnectionStringParams = {
ownerUri,
includePassword
};
return client.sendRequest(protocol.GetConnectionStringRequest.type, params).then(
r => r,
e => {
client.logFailedRequest(protocol.GetConnectionStringRequest.type, e);
return Promise.resolve(undefined);
}
);
};
let buildConnectionInfo = (connectionString: string): Thenable<azdata.ConnectionInfo> => {
return client.sendRequest(protocol.BuildConnectionInfoRequest.type, connectionString).then(
r => r,
e => {
client.logFailedRequest(protocol.BuildConnectionInfoRequest.type, e);
return Promise.resolve(e);
}
);
};
let rebuildIntelliSenseCache = (ownerUri: string): Thenable<void> => {
let params: protocol.RebuildIntelliSenseParams = {
ownerUri
};
client.sendNotification(protocol.RebuildIntelliSenseNotification.type, params);
return Promise.resolve();
};
let registerOnConnectionComplete = (handler: (connSummary: azdata.ConnectionInfoSummary) => any): void => {
client.onNotification(protocol.ConnectionCompleteNotification.type, handler);
};
let registerOnIntelliSenseCacheComplete = (handler: (connectionUri: string) => any): void => {
client.onNotification(protocol.IntelliSenseReadyNotification.type, (params: types.IntelliSenseReadyParams) => {
handler(params.ownerUri);
});
};
let registerOnConnectionChanged = (handler: (changedConnInfo: azdata.ChangedConnectionInfo) => any): void => {
client.onNotification(protocol.ConnectionChangedNotification.type, (params: protocol.ConnectionChangedParams) => {
handler({
connectionUri: params.ownerUri,
connection: params.connection
});
});
};
azdata.dataprotocol.onDidChangeLanguageFlavor((params) => {
client.sendNotification(protocol.LanguageFlavorChangedNotification.type, params);
});
return azdata.dataprotocol.registerConnectionProvider({
providerId: client.providerId,
connect,
disconnect,
cancelConnect,
changeDatabase,
listDatabases,
getConnectionString,
buildConnectionInfo,
rebuildIntelliSenseCache,
registerOnConnectionChanged,
registerOnIntelliSenseCacheComplete,
registerOnConnectionComplete
});
}