mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-19 17:22:48 -05:00
* fixing folder path in dacpac and schema compare extensions * created method * import os
96 lines
3.0 KiB
TypeScript
96 lines
3.0 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
'use strict';
|
|
import * as azdata from 'azdata';
|
|
import * as vscode from 'vscode';
|
|
import * as mssql from '../../mssql';
|
|
import * as os from 'os';
|
|
|
|
export interface IPackageInfo {
|
|
name: string;
|
|
version: string;
|
|
aiKey: string;
|
|
}
|
|
|
|
export function getPackageInfo(packageJson: any): IPackageInfo {
|
|
if (packageJson) {
|
|
return {
|
|
name: packageJson.name,
|
|
version: packageJson.version,
|
|
aiKey: packageJson.aiKey
|
|
};
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Map an error message into a short name for the type of error.
|
|
* @param msg The error message to map
|
|
*/
|
|
export function getTelemetryErrorType(msg: string): string {
|
|
if (msg.indexOf('Object reference not set to an instance of an object') !== -1) {
|
|
return 'ObjectReferenceNotSet';
|
|
}
|
|
else {
|
|
return 'Other';
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Return the appropriate endpoint name depending on if the endpoint is a dacpac or a database
|
|
* @param endpoint endpoint to get the name of
|
|
*/
|
|
export function getEndpointName(endpoint: mssql.SchemaCompareEndpointInfo): string {
|
|
if (!endpoint) {
|
|
return ' ';
|
|
}
|
|
|
|
if (endpoint.endpointType === mssql.SchemaCompareEndpointType.Database) {
|
|
if (!endpoint.serverName && endpoint.connectionDetails) {
|
|
endpoint.serverName = endpoint.connectionDetails['serverName'];
|
|
}
|
|
return `${endpoint.serverName}.${endpoint.databaseName}`;
|
|
} else {
|
|
return endpoint.packageFilePath;
|
|
}
|
|
}
|
|
|
|
function connectionInfoToConnectionProfile(details: azdata.ConnectionInfo): azdata.IConnectionProfile {
|
|
return {
|
|
serverName: details['serverName'],
|
|
databaseName: details['databaseName'],
|
|
authenticationType: details['authenticationType'],
|
|
providerName: 'MSSQL',
|
|
connectionName: '',
|
|
userName: details['userName'],
|
|
password: details['password'],
|
|
savePassword: false,
|
|
groupFullName: undefined,
|
|
saveProfile: true,
|
|
id: undefined,
|
|
groupId: undefined,
|
|
options: details['options']
|
|
};
|
|
}
|
|
|
|
export async function verifyConnectionAndGetOwnerUri(endpoint: mssql.SchemaCompareEndpointInfo): Promise<string> {
|
|
if (endpoint.endpointType === mssql.SchemaCompareEndpointType.Database && endpoint.connectionDetails) {
|
|
let connection = await azdata.connection.connect(connectionInfoToConnectionProfile(endpoint.connectionDetails), false, false);
|
|
|
|
// show error message if the can't connect to the database
|
|
if (connection.errorMessage) {
|
|
vscode.window.showErrorMessage(connection.errorMessage);
|
|
}
|
|
return await azdata.connection.getUriForConnection(connection.connectionId);
|
|
}
|
|
return undefined;
|
|
}
|
|
|
|
/**
|
|
* Returns the folder open in Explorer if there is one, otherwise returns the home directory
|
|
*/
|
|
export function getRootPath(): string {
|
|
return vscode.workspace.workspaceFolders ? vscode.workspace.workspaceFolders[0].uri.fsPath : os.homedir();
|
|
}
|