mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-24 09:35:37 -05:00
Strict null scripting (#12126)
* strict null scripting * fix compile * fix tests * fix icon
This commit is contained in:
@@ -95,7 +95,7 @@ export class DashboardInput extends EditorInput {
|
||||
|
||||
private isMasterMssql(): boolean {
|
||||
return this.connectionProfile.providerName === mssqlProviderName
|
||||
&& this.connectionProfile.databaseName.toLowerCase() === 'master';
|
||||
&& this.connectionProfile.databaseName?.toLowerCase() === 'master';
|
||||
}
|
||||
|
||||
public get uri(): string | undefined {
|
||||
|
||||
@@ -27,8 +27,8 @@ export class ScriptSelectAction extends Action {
|
||||
|
||||
public async run(actionContext: BaseActionContext): Promise<boolean> {
|
||||
return scriptSelect(
|
||||
actionContext.profile,
|
||||
actionContext.object,
|
||||
actionContext.profile!,
|
||||
actionContext.object!,
|
||||
this._connectionManagementService,
|
||||
this._queryEditorService,
|
||||
this._scriptingService
|
||||
@@ -52,8 +52,8 @@ export class ScriptExecuteAction extends Action {
|
||||
|
||||
public async run(actionContext: BaseActionContext): Promise<boolean> {
|
||||
return script(
|
||||
actionContext.profile,
|
||||
actionContext.object,
|
||||
actionContext.profile!,
|
||||
actionContext.object!,
|
||||
this._connectionManagementService,
|
||||
this._queryEditorService,
|
||||
this._scriptingService,
|
||||
@@ -79,8 +79,8 @@ export class ScriptAlterAction extends Action {
|
||||
|
||||
public async run(actionContext: BaseActionContext): Promise<boolean> {
|
||||
return script(
|
||||
actionContext.profile,
|
||||
actionContext.object,
|
||||
actionContext.profile!,
|
||||
actionContext.object!,
|
||||
this._connectionManagementService,
|
||||
this._queryEditorService,
|
||||
this._scriptingService,
|
||||
@@ -105,8 +105,8 @@ export class EditDataAction extends Action {
|
||||
|
||||
public async run(actionContext: BaseActionContext): Promise<boolean> {
|
||||
return scriptEditSelect(
|
||||
actionContext.profile,
|
||||
actionContext.object,
|
||||
actionContext.profile!,
|
||||
actionContext.object!,
|
||||
this._connectionManagementService,
|
||||
this._queryEditorService,
|
||||
this._scriptingService
|
||||
@@ -130,8 +130,8 @@ export class ScriptCreateAction extends Action {
|
||||
|
||||
public async run(actionContext: BaseActionContext): Promise<boolean> {
|
||||
return script(
|
||||
actionContext.profile,
|
||||
actionContext.object,
|
||||
actionContext.profile!,
|
||||
actionContext.object!,
|
||||
this._connectionManagementService,
|
||||
this._queryEditorService,
|
||||
this._scriptingService,
|
||||
@@ -157,8 +157,8 @@ export class ScriptDeleteAction extends Action {
|
||||
|
||||
public async run(actionContext: BaseActionContext): Promise<boolean> {
|
||||
return script(
|
||||
actionContext.profile,
|
||||
actionContext.object,
|
||||
actionContext.profile!,
|
||||
actionContext.object!,
|
||||
this._connectionManagementService,
|
||||
this._queryEditorService,
|
||||
this._scriptingService,
|
||||
|
||||
@@ -42,7 +42,7 @@ const targetDatabaseEngineEditionMap = {
|
||||
*/
|
||||
export async function scriptSelect(connectionProfile: IConnectionProfile, metadata: azdata.ObjectMetadata, connectionService: IConnectionManagementService, queryEditorService: IQueryEditorService, scriptingService: IScriptingService): Promise<boolean> {
|
||||
const connectionResult = await connectionService.connectIfNotConnected(connectionProfile);
|
||||
let paramDetails: azdata.ScriptingParamDetails = getScriptingParamDetails(connectionService, connectionResult, metadata);
|
||||
let paramDetails = getScriptingParamDetails(connectionService, connectionResult, metadata)!;
|
||||
const result = await scriptingService.script(connectionResult, metadata, ScriptOperation.Select, paramDetails);
|
||||
if (result && result.script) {
|
||||
const owner = await queryEditorService.newSqlEditor({ initalContent: result.script }, connectionProfile?.providerName);
|
||||
@@ -68,8 +68,8 @@ export async function scriptSelect(connectionProfile: IConnectionProfile, metada
|
||||
*/
|
||||
export async function scriptEditSelect(connectionProfile: IConnectionProfile, metadata: azdata.ObjectMetadata, connectionService: IConnectionManagementService, queryEditorService: IQueryEditorService, scriptingService: IScriptingService): Promise<boolean> {
|
||||
const connectionResult = await connectionService.connectIfNotConnected(connectionProfile);
|
||||
let paramDetails: azdata.ScriptingParamDetails = getScriptingParamDetails(connectionService, connectionResult, metadata);
|
||||
const result = await scriptingService.script(connectionResult, metadata, ScriptOperation.Select, paramDetails);
|
||||
let paramDetails = getScriptingParamDetails(connectionService, connectionResult, metadata);
|
||||
const result = await scriptingService.script(connectionResult, metadata, ScriptOperation.Select, paramDetails!);
|
||||
if (result && result.script) {
|
||||
const owner = await queryEditorService.newEditDataEditor(metadata.schema, metadata.name, result.script);
|
||||
// Connect our editor
|
||||
@@ -120,7 +120,7 @@ export async function script(connectionProfile: IConnectionProfile, metadata: az
|
||||
operation: ScriptOperation,
|
||||
errorMessageService: IErrorMessageService): Promise<boolean> {
|
||||
const connectionResult = await connectionService.connectIfNotConnected(connectionProfile);
|
||||
let paramDetails = getScriptingParamDetails(connectionService, connectionResult, metadata);
|
||||
let paramDetails = getScriptingParamDetails(connectionService, connectionResult, metadata)!;
|
||||
const result = await scriptingService.script(connectionResult, metadata, operation, paramDetails);
|
||||
if (result) {
|
||||
let script: string = result.script;
|
||||
@@ -160,18 +160,21 @@ export async function script(connectionProfile: IConnectionProfile, metadata: az
|
||||
}
|
||||
}
|
||||
|
||||
function getScriptingParamDetails(connectionService: IConnectionManagementService, ownerUri: string, metadata: azdata.ObjectMetadata): azdata.ScriptingParamDetails {
|
||||
let serverInfo: azdata.ServerInfo = getServerInfo(connectionService, ownerUri);
|
||||
let paramDetails: azdata.ScriptingParamDetails = {
|
||||
filePath: undefined,
|
||||
scriptCompatibilityOption: scriptCompatibilityOptionMap[serverInfo.serverMajorVersion],
|
||||
targetDatabaseEngineEdition: targetDatabaseEngineEditionMap[serverInfo.engineEditionId],
|
||||
targetDatabaseEngineType: serverInfo.isCloud ? 'SqlAzure' : 'SingleInstance'
|
||||
};
|
||||
return paramDetails;
|
||||
function getScriptingParamDetails(connectionService: IConnectionManagementService, ownerUri: string, metadata: azdata.ObjectMetadata): azdata.ScriptingParamDetails | undefined {
|
||||
let serverInfo: azdata.ServerInfo | undefined = getServerInfo(connectionService, ownerUri);
|
||||
if (serverInfo) {
|
||||
let paramDetails: azdata.ScriptingParamDetails = {
|
||||
filePath: undefined,
|
||||
scriptCompatibilityOption: scriptCompatibilityOptionMap[serverInfo.serverMajorVersion as keyof typeof scriptCompatibilityOptionMap],
|
||||
targetDatabaseEngineEdition: targetDatabaseEngineEditionMap[serverInfo.engineEditionId as keyof typeof targetDatabaseEngineEditionMap],
|
||||
targetDatabaseEngineType: serverInfo.isCloud ? 'SqlAzure' : 'SingleInstance'
|
||||
};
|
||||
return paramDetails;
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
function getServerInfo(connectionService: IConnectionManagementService, ownerUri: string): azdata.ServerInfo {
|
||||
function getServerInfo(connectionService: IConnectionManagementService, ownerUri: string): azdata.ServerInfo | undefined {
|
||||
let connection: ConnectionManagementInfo = connectionService.getConnectionInfo(ownerUri);
|
||||
return connection.serverInfo;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user