Add vscode support for System database package references for SDK-style sql projects (#23383)

* changes for supporting system db package references in vscode

* cleanup

* address comments
This commit is contained in:
Kim Santiago
2023-06-14 13:30:03 -10:00
committed by GitHub
parent b135a06f8a
commit 42a0622d93
3 changed files with 53 additions and 10 deletions

View File

@@ -116,16 +116,27 @@ async function addSystemDatabaseReference(project: Project): Promise<ISystemData
const selectedSystemDb = await vscode.window.showQuickPick(
getSystemDbOptions(project),
{ title: constants.systemDatabase, ignoreFocusOut: true, });
{ title: constants.systemDatabase, ignoreFocusOut: true });
if (!selectedSystemDb) {
// User cancelled
return undefined;
}
// 3. Prompt DB name
const dbName = await promptDbName(selectedSystemDb);
// 3 Prompt for Reference Type if it's an SDK-style project
const referenceType = await promptReferenceType(project);
if (referenceType === undefined) { // need to check for specifically undefined here because the enum SystemDbReferenceType.ArtifactReference evaluates to 0
// User cancelled
return undefined;
}
// 4. Prompt suppress unresolved ref errors
// 4. Prompt DB name
const dbName = await promptDbName(selectedSystemDb);
if (!dbName) {
// User cancelled
return undefined;
}
// 5. Prompt suppress unresolved ref errors
const suppressErrors = await promptSuppressUnresolvedRefErrors();
TelemetryReporter.createActionEvent(TelemetryViews.ProjectTree, TelemetryActions.addDatabaseReference)
@@ -136,7 +147,7 @@ async function addSystemDatabaseReference(project: Project): Promise<ISystemData
databaseVariableLiteralValue: dbName,
systemDb: getSystemDatabase(selectedSystemDb),
suppressMissingDependenciesErrors: suppressErrors,
systemDbReferenceType: SystemDbReferenceType.ArtifactReference
systemDbReferenceType: referenceType
};
}
@@ -376,3 +387,21 @@ async function promptDbServerValues(location: string, defaultDbName: string): Pr
}
return ret;
}
async function promptReferenceType(project: Project): Promise<SystemDbReferenceType | undefined> {
let referenceType = SystemDbReferenceType.ArtifactReference;
if (project.sqlProjStyle === ProjectType.SdkStyle) {
const referenceTypeString = await vscode.window.showQuickPick(
[constants.packageReference, constants.artifactReference],
{ title: constants.referenceTypeRadioButtonsGroupTitle, ignoreFocusOut: true }
);
if (referenceTypeString === undefined) { // need to check for specifically undefined here because the enum SystemDbReferenceType.ArtifactReference evaluates to 0
return undefined;
}
referenceType = referenceTypeString === constants.packageReference ? SystemDbReferenceType.PackageReference : SystemDbReferenceType.ArtifactReference;
}
return referenceType;
}

View File

@@ -838,8 +838,9 @@ export class Project implements ISqlProject {
result = await sqlProjService.addSystemDatabaseReference(this.projectFilePath, systemDb, settings.suppressMissingDependenciesErrors, referenceType, settings.databaseVariableLiteralValue);
} else {
systemDb = <unknown>settings.systemDb as vscodeMssql.SystemDatabase;
referenceType = settings.systemDbReferenceType as vscodeMssql.SystemDbReferenceType;
sqlProjService = this.sqlProjService as vscodeMssql.ISqlProjectsService;
result = await sqlProjService.addSystemDatabaseReference(this.projectFilePath, systemDb, settings.suppressMissingDependenciesErrors, settings.databaseVariableLiteralValue);
result = await sqlProjService.addSystemDatabaseReference(this.projectFilePath, systemDb, settings.suppressMissingDependenciesErrors, referenceType, settings.databaseVariableLiteralValue);
}
if (!result.success && result.errorMessage) {