mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-22 09:35:37 -05:00
Set target platform for db projects from server metadata: mssql vscode extension (#20607)
* Set target platform for mssql vscode extension- create project from db feature * Addressed comments * Address comment to add EngineEdition information in vscode-mssql.d.ts
This commit is contained in:
@@ -714,17 +714,16 @@ export async function fileContainsCreateTableStatement(fullPath: string, project
|
||||
|
||||
/**
|
||||
* Gets target platform based on the server edition/version
|
||||
* @param connectionId server connection profile id
|
||||
* @param serverInfo server information
|
||||
* @returns target platform for the database project
|
||||
*/
|
||||
export async function getTargetPlatformFromServerVersion(connectionId: string): Promise<SqlTargetPlatform | undefined> {
|
||||
const serverInfo = await getAzdataApi()!.connection.getServerInfo(connectionId);
|
||||
export async function getTargetPlatformFromServerVersion(serverInfo: azdataType.ServerInfo | vscodeMssql.ServerInfo): Promise<SqlTargetPlatform | undefined> {
|
||||
const isCloud = serverInfo.isCloud;
|
||||
|
||||
let targetPlatform;
|
||||
if (isCloud) {
|
||||
const engineEdition = serverInfo.engineEditionId;
|
||||
targetPlatform = engineEdition === getAzdataApi()!.DatabaseEngineEdition.SqlDataWarehouse ? SqlTargetPlatform.sqlDW : SqlTargetPlatform.sqlAzure;
|
||||
targetPlatform = engineEdition === vscodeMssql.DatabaseEngineEdition.SqlDataWarehouse ? SqlTargetPlatform.sqlDW : SqlTargetPlatform.sqlAzure;
|
||||
} else {
|
||||
const serverMajorVersion = serverInfo.serverMajorVersion;
|
||||
targetPlatform = serverMajorVersion ? constants.onPremServerVersionToTargetPlatform.get(serverMajorVersion) : undefined;
|
||||
|
||||
@@ -1420,7 +1420,7 @@ export class ProjectsController {
|
||||
}
|
||||
const model = await createNewProjectFromDatabaseWithQuickpick(profile as mssqlVscode.IConnectionInfo);
|
||||
if (model) {
|
||||
await this.createProjectFromDatabaseCallback(model);
|
||||
await this.createProjectFromDatabaseCallback(model, profile as mssqlVscode.IConnectionInfo);
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
@@ -1431,13 +1431,22 @@ export class ProjectsController {
|
||||
return new CreateProjectFromDatabaseDialog(profile);
|
||||
}
|
||||
|
||||
public async createProjectFromDatabaseCallback(model: ImportDataModel, connectionId?: string) {
|
||||
public async createProjectFromDatabaseCallback(model: ImportDataModel, connectionInfo?: string | mssqlVscode.IConnectionInfo) {
|
||||
try {
|
||||
|
||||
const newProjFolderUri = model.filePath;
|
||||
let targetPlatform: SqlTargetPlatform | undefined;
|
||||
if (connectionId) {
|
||||
targetPlatform = await utils.getTargetPlatformFromServerVersion(connectionId);
|
||||
let serverInfo;
|
||||
if (connectionInfo) {
|
||||
if (typeof connectionInfo === 'string') {
|
||||
serverInfo = await utils.getAzdataApi()!.connection.getServerInfo(connectionInfo);
|
||||
} else {
|
||||
serverInfo = (await utils.getVscodeMssqlApi()).getServerInfo(connectionInfo);
|
||||
}
|
||||
}
|
||||
|
||||
if (serverInfo) {
|
||||
targetPlatform = await utils.getTargetPlatformFromServerVersion(serverInfo);
|
||||
}
|
||||
|
||||
const newProjFilePath = await this.createNewProject({
|
||||
|
||||
@@ -509,7 +509,7 @@ describe('ProjectsController', function (): void {
|
||||
version: '1.0.0.0',
|
||||
extractTarget: mssql.ExtractTarget['schemaObjectType'],
|
||||
sdkStyle: false
|
||||
});
|
||||
}, undefined);
|
||||
|
||||
return Promise.resolve(undefined);
|
||||
});
|
||||
@@ -517,7 +517,7 @@ describe('ProjectsController', function (): void {
|
||||
const projController = TypeMoq.Mock.ofType(ProjectsController);
|
||||
projController.callBase = true;
|
||||
projController.setup(x => x.getCreateProjectFromDatabaseDialog(TypeMoq.It.isAny())).returns(() => createProjectFromDatabaseDialog.object);
|
||||
projController.setup(x => x.createProjectFromDatabaseCallback(TypeMoq.It.isAny())).returns(() => {
|
||||
projController.setup(x => x.createProjectFromDatabaseCallback(TypeMoq.It.isAny(), TypeMoq.It.isAny())).returns(() => {
|
||||
holler = createProjectFromDbHoller;
|
||||
return Promise.resolve(undefined);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user