Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,9 @@ export class DataExtensionsEditorView extends AbstractWebview<
// In application mode, we need the database of a specific library to generate
// the modeled methods. In framework mode, we'll use the current database.
if (this.mode === Mode.Application) {
addedDatabase = await this.promptImportDatabase(progress);
addedDatabase = await this.promptChooseNewOrExistingDatabase(
progress,
);
if (!addedDatabase) {
return;
}
Expand Down Expand Up @@ -341,17 +343,6 @@ export class DataExtensionsEditorView extends AbstractWebview<
)`Failed to generate flow model: ${getErrorMessage(e)}`,
);
}

if (addedDatabase) {
// After the flow model has been generated, we can remove the temporary database
// which we used for generating the flow model.
progress({
step: 3900,
maxStep: 4000,
message: "Removing temporary database",
});
await this.databaseManager.removeDatabaseItem(addedDatabase);
}
},
{ cancellable: false },
);
Expand Down Expand Up @@ -431,7 +422,9 @@ export class DataExtensionsEditorView extends AbstractWebview<

private async modelDependency(): Promise<void> {
return withProgress(async (progress, token) => {
const addedDatabase = await this.promptImportDatabase(progress);
const addedDatabase = await this.promptChooseNewOrExistingDatabase(
progress,
);
if (!addedDatabase || token.isCancellationRequested) {
return;
}
Expand Down Expand Up @@ -462,6 +455,53 @@ export class DataExtensionsEditorView extends AbstractWebview<
});
}

private async promptChooseNewOrExistingDatabase(
progress: ProgressCallback,
): Promise<DatabaseItem | undefined> {
const language = this.databaseItem.language;
const databases = this.databaseManager.databaseItems.filter(
(db) => db.language === language,
);
if (databases.length === 0) {
return await this.promptImportDatabase(progress);
} else {
const local = {
label: "$(database) Use existing database",
detail: "Use database from the workspace",
};
const github = {
label: "$(repo) Import database",
detail: "Choose database from GitHub",
};
const newOrExistingDatabase = await window.showQuickPick([local, github]);

if (!newOrExistingDatabase) {
void this.app.logger.log("No database chosen");
return;
}

if (newOrExistingDatabase === local) {
const pickedDatabase = await window.showQuickPick(
databases.map((database) => ({
label: database.name,
description: database.language,
database,
})),
{
placeHolder: "Pick a database",
},
);
if (!pickedDatabase) {
void this.app.logger.log("No database chosen");
return;
}
return pickedDatabase.database;
} else {
return await this.promptImportDatabase(progress);
}
}
}

private async promptImportDatabase(
progress: ProgressCallback,
): Promise<DatabaseItem | undefined> {
Expand Down