mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-06 09:35:41 -05:00
* removes more builder references * remove builder from profiler * formatting * fix profiler dailog * remove builder from oatuhdialog * remove the rest of builder references * formatting * add more strict null checks to base * enable strict tslint rules * fix formatting * fix compile error * fix the rest of the hygeny issues and add pipeline step * fix pipeline files
160 lines
5.7 KiB
TypeScript
160 lines
5.7 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 nls from 'vscode-nls';
|
|
import * as vscode from 'vscode';
|
|
import { AgentUtils } from '../agentUtils';
|
|
import { IAgentDialogData, AgentDialogMode } from '../interfaces';
|
|
import { JobData } from './jobData';
|
|
|
|
const localize = nls.loadMessageBundle();
|
|
|
|
export class JobStepData implements IAgentDialogData {
|
|
|
|
// Error Messages
|
|
private static readonly CreateStepErrorMessage_JobNameIsEmpty = localize('stepData.jobNameRequired', 'Job name must be provided');
|
|
private static readonly CreateStepErrorMessage_StepNameIsEmpty = localize('stepData.stepNameRequired', 'Step name must be provided');
|
|
|
|
public dialogMode: AgentDialogMode;
|
|
public ownerUri: string;
|
|
public jobId: string;
|
|
public jobName: string;
|
|
public script: string;
|
|
public scriptName: string;
|
|
public stepName: string;
|
|
public subSystem: string;
|
|
public id: number;
|
|
public failureAction: string;
|
|
public successAction: string;
|
|
public successStepId: number;
|
|
public failStepId: number;
|
|
public command: string;
|
|
public commandExecutionSuccessCode: number;
|
|
public databaseName: string;
|
|
public databaseUserName: string;
|
|
public server: string;
|
|
public outputFileName: string;
|
|
public appendToLogFile: boolean;
|
|
public appendToStepHist: boolean;
|
|
public writeLogToTable: boolean;
|
|
public appendLogToTable: boolean;
|
|
public retryAttempts: number;
|
|
public retryInterval: number;
|
|
public proxyName: string;
|
|
private jobModel: JobData;
|
|
private viaJobDialog: boolean;
|
|
|
|
constructor(ownerUri: string, jobModel?: JobData, viaJobDialog: boolean = false) {
|
|
this.ownerUri = ownerUri;
|
|
this.jobName = jobModel.name;
|
|
this.jobModel = jobModel;
|
|
this.viaJobDialog = viaJobDialog;
|
|
}
|
|
|
|
public async initialize() {
|
|
}
|
|
|
|
public async save() {
|
|
let agentService = await AgentUtils.getAgentService();
|
|
let result: any;
|
|
// if it's called via the job dialog, add it to the
|
|
// job model
|
|
if (this.viaJobDialog) {
|
|
if (this.jobModel) {
|
|
Promise.resolve(this);
|
|
return;
|
|
}
|
|
} else {
|
|
// has to be a create step
|
|
result = await agentService.createJobStep(this.ownerUri, JobStepData.convertToAgentJobStepInfo(this));
|
|
}
|
|
if (!result || !result.success) {
|
|
vscode.window.showErrorMessage(
|
|
localize('jobStepData.saveErrorMessage', "Step update failed '{0}'", result.errorMessage ? result.errorMessage : 'Unknown'));
|
|
}
|
|
}
|
|
|
|
public validate(): { valid: boolean, errorMessages: string[] } {
|
|
let validationErrors: string[] = [];
|
|
|
|
if (!(this.stepName && this.stepName.trim())) {
|
|
validationErrors.push(JobStepData.CreateStepErrorMessage_StepNameIsEmpty);
|
|
}
|
|
|
|
if (!(this.jobName && this.jobName.trim())) {
|
|
validationErrors.push(JobStepData.CreateStepErrorMessage_JobNameIsEmpty);
|
|
}
|
|
|
|
return {
|
|
valid: validationErrors.length === 0,
|
|
errorMessages: validationErrors
|
|
};
|
|
}
|
|
|
|
public static convertToJobStepData(jobStepInfo: azdata.AgentJobStepInfo, jobData: JobData) {
|
|
let stepData = new JobStepData(jobData.ownerUri, jobData);
|
|
stepData.ownerUri = jobData.ownerUri;
|
|
stepData.jobId = jobStepInfo.jobId;
|
|
stepData.jobName = jobStepInfo.jobName;
|
|
stepData.script = jobStepInfo.script;
|
|
stepData.scriptName = jobStepInfo.scriptName,
|
|
stepData.stepName = jobStepInfo.stepName,
|
|
stepData.subSystem = jobStepInfo.subSystem,
|
|
stepData.id = jobStepInfo.id,
|
|
stepData.failureAction = jobStepInfo.failureAction,
|
|
stepData.successAction = jobStepInfo.successAction,
|
|
stepData.failStepId = jobStepInfo.failStepId,
|
|
stepData.successStepId = jobStepInfo.successStepId,
|
|
stepData.command = jobStepInfo.command,
|
|
stepData.commandExecutionSuccessCode = jobStepInfo.commandExecutionSuccessCode,
|
|
stepData.databaseName = jobStepInfo.databaseName,
|
|
stepData.databaseUserName = jobStepInfo.databaseUserName,
|
|
stepData.server = jobStepInfo.server,
|
|
stepData.outputFileName = jobStepInfo.outputFileName,
|
|
stepData.appendToLogFile = jobStepInfo.appendToLogFile,
|
|
stepData.appendToStepHist = jobStepInfo.appendToStepHist,
|
|
stepData.writeLogToTable = jobStepInfo.writeLogToTable,
|
|
stepData.appendLogToTable = jobStepInfo.appendLogToTable,
|
|
stepData.retryAttempts = jobStepInfo.retryAttempts,
|
|
stepData.retryInterval = jobStepInfo.retryInterval,
|
|
stepData.proxyName = jobStepInfo.proxyName;
|
|
stepData.dialogMode = AgentDialogMode.EDIT;
|
|
stepData.viaJobDialog = true;
|
|
return stepData;
|
|
}
|
|
|
|
public static convertToAgentJobStepInfo(jobStepData: JobStepData): azdata.AgentJobStepInfo {
|
|
let result: azdata.AgentJobStepInfo = {
|
|
jobId: jobStepData.jobId,
|
|
jobName: jobStepData.jobName,
|
|
script: jobStepData.script,
|
|
scriptName: jobStepData.scriptName,
|
|
stepName: jobStepData.stepName,
|
|
subSystem: jobStepData.subSystem,
|
|
id: jobStepData.id,
|
|
failureAction: jobStepData.failureAction,
|
|
successAction: jobStepData.successAction,
|
|
failStepId: jobStepData.failStepId,
|
|
successStepId: jobStepData.successStepId,
|
|
command: jobStepData.command,
|
|
commandExecutionSuccessCode: jobStepData.commandExecutionSuccessCode,
|
|
databaseName: jobStepData.databaseName,
|
|
databaseUserName: jobStepData.databaseUserName,
|
|
server: jobStepData.server,
|
|
outputFileName: jobStepData.outputFileName,
|
|
appendToLogFile: jobStepData.appendToLogFile,
|
|
appendToStepHist: jobStepData.appendToStepHist,
|
|
writeLogToTable: jobStepData.writeLogToTable,
|
|
appendLogToTable: jobStepData.appendLogToTable,
|
|
retryAttempts: jobStepData.retryAttempts,
|
|
retryInterval: jobStepData.retryInterval,
|
|
proxyName: jobStepData.proxyName
|
|
};
|
|
return result;
|
|
}
|
|
|
|
} |