in src/main.ts [704:761]
protected registerProvider(options: undefined): Disposable {
const client = this._client;
let getMetadata = (ownerUri: string): Thenable<azdata.ProviderMetadata> => {
let params: types.MetadataQueryParams = { ownerUri };
return client.sendRequest(protocol.MetadataQueryRequest.type, params).then(
client.sqlp2c.asProviderMetadata,
e => {
client.logFailedRequest(protocol.MetadataQueryRequest.type, e);
return Promise.resolve(undefined);
}
);
};
let getDatabases = (ownerUri: string): Thenable<string[] | azdata.DatabaseInfo[]> => {
let params: protocol.ListDatabasesParams = {
ownerUri: ownerUri,
includeDetails: true
};
return client.sendRequest(protocol.ListDatabasesRequest.type, params).then(
r => { return r.databaseNames ? r.databaseNames : r.databases; },
e => {
client.logFailedRequest(protocol.ListDatabasesRequest.type, e);
return Promise.resolve(undefined);
}
);
};
let getTableInfo = (ownerUri: string, metadata: azdata.ObjectMetadata): Thenable<azdata.ColumnMetadata[]> => {
let params: protocol.TableMetadataParams = { objectName: metadata.name, ownerUri, schema: metadata.schema };
return client.sendRequest(protocol.TableMetadataRequest.type, params).then(
r => r.columns,
e => {
client.logFailedRequest(protocol.TableMetadataRequest.type, e);
return Promise.resolve(undefined);
}
);
};
let getViewInfo = (ownerUri: string, metadata: azdata.ObjectMetadata): Thenable<azdata.ColumnMetadata[]> => {
let params: protocol.TableMetadataParams = { objectName: metadata.name, ownerUri, schema: metadata.schema };
return client.sendRequest(protocol.ViewMetadataRequest.type, params).then(
r => r.columns,
e => {
client.logFailedRequest(protocol.ViewMetadataRequest.type, e);
return Promise.resolve(undefined);
}
);
};
return azdata.dataprotocol.registerMetadataProvider({
providerId: client.providerId,
getDatabases,
getMetadata,
getTableInfo,
getViewInfo
});
}