mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-21 17:22:55 -05:00
Make various enhancements to Notebook Provider registration. (#17609)
* Use built-in SQL ExecuteProvider by default if no other provider exists. * Gracefully handle case where standardKernels are not defined for a provider. * Standardize on just using arrays for various provider registration details.
This commit is contained in:
@@ -306,27 +306,21 @@ export class NotebookService extends Disposable implements INotebookService {
|
||||
|
||||
private handleNewProviderDescriptions(p: { id: string; registration: ProviderDescriptionRegistration }) {
|
||||
let registration = p.registration;
|
||||
if (registration.fileExtensions) {
|
||||
if (registration.fileExtensions?.length > 0) {
|
||||
let extensions = registration.fileExtensions;
|
||||
if (!this._serializationProviders.has(p.id)) {
|
||||
// Only add a new provider descriptor if the provider
|
||||
// supports file extensions beyond the default ipynb
|
||||
let isNewFileType = (fileExt: string) => fileExt?.length > 0 && fileExt.toUpperCase() !== DEFAULT_NOTEBOOK_FILETYPE;
|
||||
let addNewProvider = Array.isArray(extensions) ? extensions.some(ext => isNewFileType(ext)) : isNewFileType(extensions);
|
||||
let addNewProvider = extensions.some(ext => ext?.length > 0 && ext.toUpperCase() !== DEFAULT_NOTEBOOK_FILETYPE);
|
||||
if (addNewProvider) {
|
||||
this._serializationProviders.set(p.id, new SerializationProviderDescriptor(p.id));
|
||||
}
|
||||
}
|
||||
if (Array.isArray(extensions)) {
|
||||
for (let fileType of extensions) {
|
||||
this.addFileProvider(fileType, registration);
|
||||
}
|
||||
}
|
||||
else {
|
||||
this.addFileProvider(extensions, registration);
|
||||
for (let fileType of extensions) {
|
||||
this.addFileProvider(fileType, registration);
|
||||
}
|
||||
}
|
||||
if (registration.standardKernels) {
|
||||
if (registration.standardKernels?.length > 0) {
|
||||
if (!this._executeProviders.has(p.id)) {
|
||||
this._executeProviders.set(p.id, new ExecuteProviderDescriptor(p.id));
|
||||
}
|
||||
@@ -402,13 +396,9 @@ export class NotebookService extends Disposable implements INotebookService {
|
||||
if (!standardKernels) {
|
||||
standardKernels = [];
|
||||
}
|
||||
if (Array.isArray(provider.standardKernels)) {
|
||||
provider.standardKernels.forEach(kernel => {
|
||||
standardKernels.push(kernel);
|
||||
});
|
||||
} else {
|
||||
standardKernels.push(provider.standardKernels);
|
||||
}
|
||||
provider.standardKernels.forEach(kernel => {
|
||||
standardKernels.push(kernel);
|
||||
});
|
||||
// Filter out unusable kernels when running on a SAW
|
||||
if (this.productService.quality === 'saw') {
|
||||
standardKernels = standardKernels.filter(kernel => !kernel.blockedOnSAW);
|
||||
@@ -420,14 +410,12 @@ export class NotebookService extends Disposable implements INotebookService {
|
||||
return Array.from(this._fileToProviderDescriptions.keys());
|
||||
}
|
||||
|
||||
getProvidersForFileType(fileType: string): string[] {
|
||||
fileType = fileType.toUpperCase();
|
||||
let providers = this._fileToProviderDescriptions.get(fileType);
|
||||
|
||||
return providers ? providers.map(provider => provider.provider) : undefined;
|
||||
getProvidersForFileType(fileType: string): string[] | undefined {
|
||||
let providers = this._fileToProviderDescriptions.get(fileType.toUpperCase());
|
||||
return providers?.map(provider => provider.provider);
|
||||
}
|
||||
|
||||
getStandardKernelsForProvider(provider: string): nb.IStandardKernel[] {
|
||||
getStandardKernelsForProvider(provider: string): nb.IStandardKernel[] | undefined {
|
||||
return this._providerToStandardKernels.get(provider.toUpperCase());
|
||||
}
|
||||
|
||||
@@ -700,8 +688,8 @@ export class NotebookService extends Disposable implements INotebookService {
|
||||
|
||||
notebookRegistry.registerProviderDescription({
|
||||
provider: serializationProvider.providerId,
|
||||
fileExtensions: DEFAULT_NOTEBOOK_FILETYPE,
|
||||
standardKernels: { name: notebookConstants.SQL, displayName: notebookConstants.SQL, connectionProviderIds: [notebookConstants.SQL_CONNECTION_PROVIDER] }
|
||||
fileExtensions: [DEFAULT_NOTEBOOK_FILETYPE],
|
||||
standardKernels: [{ name: notebookConstants.SQL, displayName: notebookConstants.SQL, connectionProviderIds: [notebookConstants.SQL_CONNECTION_PROVIDER] }]
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user