/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { NotificationType, RequestType } from 'vscode-languageclient'; import { ITelemetryEventProperties, ITelemetryEventMeasures } from './telemetry'; import * as azdata from 'azdata'; import { ConnectParams } from 'dataprotocol-client/lib/protocol'; import * as mssql from './mssql'; // ------------------------------- < Telemetry Sent Event > ------------------------------------ /** * Event sent when the language service send a telemetry event */ export namespace TelemetryNotification { export const type = new NotificationType('telemetry/sqlevent'); } /** * Update event parameters */ export class TelemetryParams { public params: { eventName: string; properties: ITelemetryEventProperties; measures: ITelemetryEventMeasures; }; } // ------------------------------- ---------------------------------- // ------------------------------- < Security Token Request > ------------------------------------------ export interface RequestSecurityTokenParams { authority: string; provider: string; resource: string; scope: string; } export interface RequestSecurityTokenResponse { accountKey: string; token: string; } export namespace SecurityTokenRequest { export const type = new RequestType('account/securityTokenRequest'); } // ------------------------------- ------------------------------------------ // ------------------------------- < Agent Management > ------------------------------------ // Job management parameters export interface AgentJobsParams { ownerUri: string; jobId: string; } export interface AgentJobHistoryParams { ownerUri: string; jobId: string; jobName: string; } export interface AgentJobActionParams { ownerUri: string; jobName: string; action: string; } export interface CreateAgentJobParams { ownerUri: string; job: azdata.AgentJobInfo; } export interface UpdateAgentJobParams { ownerUri: string; originalJobName: string; job: azdata.AgentJobInfo; } export interface DeleteAgentJobParams { ownerUri: string; job: azdata.AgentJobInfo; } export interface AgentJobDefaultsParams { ownerUri: string; } // Job Step management parameters export interface CreateAgentJobStepParams { ownerUri: string; step: azdata.AgentJobStepInfo; } export interface UpdateAgentJobStepParams { ownerUri: string; originalJobStepName: string; step: azdata.AgentJobStepInfo; } export interface DeleteAgentJobStepParams { ownerUri: string; step: azdata.AgentJobStepInfo; } // Notebook management parameters export interface AgentNotebookParams { ownerUri: string; } export interface AgentNotebookHistoryParams { ownerUri: string; jobId: string; jobName: string; targetDatabase: string; } export interface AgentNotebookMaterializedParams { ownerUri: string; targetDatabase: string; notebookMaterializedId: number; } export interface AgentNotebookTemplateParams { ownerUri: string; targetDatabase: string; jobId: string; } export interface CreateAgentNotebookParams { ownerUri: string; notebook: azdata.AgentNotebookInfo; templateFilePath: string; } export interface UpdateAgentNotebookParams { ownerUri: string; originalNotebookName: string; notebook: azdata.AgentJobInfo; templateFilePath: string; } export interface UpdateAgentNotebookRunPinParams { ownerUri: string; targetDatabase: string; agentNotebookHistory: azdata.AgentNotebookHistoryInfo; materializedNotebookPin: boolean; } export interface UpdateAgentNotebookRunNameParams { ownerUri: string; targetDatabase: string; agentNotebookHistory: azdata.AgentNotebookHistoryInfo; materializedNotebookName: string; } export interface DeleteAgentNotebookParams { ownerUri: string; notebook: azdata.AgentNotebookInfo; } export interface DeleteAgentMaterializedNotebookParams { ownerUri: string; targetDatabase: string; agentNotebookHistory: azdata.AgentNotebookHistoryInfo; } // Alert management parameters export interface AgentAlertsParams { ownerUri: string; } export interface CreateAgentAlertParams { ownerUri: string; alert: azdata.AgentAlertInfo; } export interface UpdateAgentAlertParams { ownerUri: string; originalAlertName: string; alert: azdata.AgentAlertInfo; } export interface DeleteAgentAlertParams { ownerUri: string; alert: azdata.AgentAlertInfo; } // Operator management parameters export interface AgentOperatorsParams { ownerUri: string; } export interface CreateAgentOperatorParams { ownerUri: string; operator: azdata.AgentOperatorInfo; } export interface UpdateAgentOperatorParams { ownerUri: string; originalOperatorName: string; operator: azdata.AgentOperatorInfo; } export interface DeleteAgentOperatorParams { ownerUri: string; operator: azdata.AgentOperatorInfo; } // Proxy management parameters export interface AgentProxiesParams { ownerUri: string; } export interface CreateAgentProxyParams { ownerUri: string; proxy: azdata.AgentProxyInfo; } export interface UpdateAgentProxyParams { ownerUri: string; originalProxyName: string; proxy: azdata.AgentProxyInfo; } export interface DeleteAgentProxyParams { ownerUri: string; proxy: azdata.AgentProxyInfo; } // Agent Credentials parameters export interface GetCredentialsParams { ownerUri: string; } // Job Schedule management parameters export interface AgentJobScheduleParams { ownerUri: string; } export interface CreateAgentJobScheduleParams { ownerUri: string; schedule: azdata.AgentJobScheduleInfo; } export interface UpdateAgentJobScheduleParams { ownerUri: string; originalScheduleName: string; schedule: azdata.AgentJobScheduleInfo; } export interface DeleteAgentJobScheduleParams { ownerUri: string; schedule: azdata.AgentJobScheduleInfo; } // Agent Job management requests export namespace AgentJobsRequest { export const type = new RequestType('agent/jobs'); } export namespace AgentJobHistoryRequest { export const type = new RequestType('agent/jobhistory'); } export namespace AgentJobActionRequest { export const type = new RequestType('agent/jobaction'); } export namespace CreateAgentJobRequest { export const type = new RequestType('agent/createjob'); } export namespace UpdateAgentJobRequest { export const type = new RequestType('agent/updatejob'); } export namespace DeleteAgentJobRequest { export const type = new RequestType('agent/deletejob'); } export namespace AgentJobDefaultsRequest { export const type = new RequestType('agent/jobdefaults'); } // Job Step requests export namespace CreateAgentJobStepRequest { export const type = new RequestType('agent/createjobstep'); } export namespace UpdateAgentJobStepRequest { export const type = new RequestType('agent/updatejobstep'); } export namespace DeleteAgentJobStepRequest { export const type = new RequestType('agent/deletejobstep'); } // Notebooks request export namespace AgentNotebooksRequest { export const type = new RequestType('agent/notebooks'); } export namespace AgentNotebookHistoryRequest { export const type = new RequestType('agent/notebookhistory'); } export namespace AgentNotebookMaterializedRequest { export const type = new RequestType('agent/notebookmaterialized'); } export namespace UpdateAgentNotebookRunNameRequest { export const type = new RequestType('agent/updatenotebookname'); } export namespace DeleteMaterializedNotebookRequest { export const type = new RequestType('agent/deletematerializednotebook'); } export namespace UpdateAgentNotebookRunPinRequest { export const type = new RequestType('agent/updatenotebookpin'); } export namespace AgentNotebookTemplateRequest { export const type = new RequestType('agent/notebooktemplate'); } export namespace CreateAgentNotebookRequest { export const type = new RequestType('agent/createnotebook'); } export namespace DeleteAgentNotebookRequest { export const type = new RequestType('agent/deletenotebook'); } export namespace UpdateAgentNotebookRequest { export const type = new RequestType('agent/updatenotebook'); } // Alerts requests export namespace AgentAlertsRequest { export const type = new RequestType('agent/alerts'); } export namespace CreateAgentAlertRequest { export const type = new RequestType('agent/createalert'); } export namespace UpdateAgentAlertRequest { export const type = new RequestType('agent/updatealert'); } export namespace DeleteAgentAlertRequest { export const type = new RequestType('agent/deletealert'); } // Operators requests export namespace AgentOperatorsRequest { export const type = new RequestType('agent/operators'); } export namespace CreateAgentOperatorRequest { export const type = new RequestType('agent/createoperator'); } export namespace UpdateAgentOperatorRequest { export const type = new RequestType('agent/updateoperator'); } export namespace DeleteAgentOperatorRequest { export const type = new RequestType('agent/deleteoperator'); } // Proxies requests export namespace AgentProxiesRequest { export const type = new RequestType('agent/proxies'); } export namespace CreateAgentProxyRequest { export const type = new RequestType('agent/createproxy'); } export namespace UpdateAgentProxyRequest { export const type = new RequestType('agent/updateproxy'); } export namespace DeleteAgentProxyRequest { export const type = new RequestType('agent/deleteproxy'); } // Agent Credentials request export namespace AgentCredentialsRequest { export const type = new RequestType('security/credentials'); } // Job Schedules requests export namespace AgentJobSchedulesRequest { export const type = new RequestType('agent/schedules'); } export namespace CreateAgentJobScheduleRequest { export const type = new RequestType('agent/createschedule'); } export namespace UpdateAgentJobScheduleRequest { export const type = new RequestType('agent/updateschedule'); } export namespace DeleteAgentJobScheduleRequest { export const type = new RequestType('agent/deleteschedule'); } // ------------------------------- < Agent Management > ------------------------------------ // ------------------------------- < DacFx > ------------------------------------ export enum TaskExecutionMode { execute = 0, script = 1, executeAndScript = 2, } export interface ExportParams { databaseName: string; packageFilePath: string; ownerUri: string; taskExecutionMode: TaskExecutionMode; } export interface ImportParams { packageFilePath: string; databaseName: string; ownerUri: string; taskExecutionMode: TaskExecutionMode; } export interface ExtractParams { databaseName: string; packageFilePath: string; applicationName: string; applicationVersion: string; ownerUri: string; extractTarget?: mssql.ExtractTarget; taskExecutionMode: TaskExecutionMode; } export interface DeployParams { packageFilePath: string; databaseName: string; upgradeExisting: boolean; sqlCommandVariableValues?: Record; deploymentOptions?: mssql.DeploymentOptions; ownerUri: string; taskExecutionMode: TaskExecutionMode; } export interface GenerateDeployScriptParams { packageFilePath: string; databaseName: string; sqlCommandVariableValues?: Record; deploymentOptions?: mssql.DeploymentOptions ownerUri: string; taskExecutionMode: TaskExecutionMode; } export interface GenerateDeployPlanParams { packageFilePath: string; databaseName: string; ownerUri: string; taskExecutionMode: TaskExecutionMode; } export interface GetOptionsFromProfileParams { profilePath: string; } export interface ValidateStreamingJobParams { packageFilePath: string, createStreamingJobTsql: string } export namespace ExportRequest { export const type = new RequestType('dacfx/export'); } export namespace ImportRequest { export const type = new RequestType('dacfx/import'); } export namespace ExtractRequest { export const type = new RequestType('dacfx/extract'); } export namespace DeployRequest { export const type = new RequestType('dacfx/deploy'); } export namespace GenerateDeployScriptRequest { export const type = new RequestType('dacfx/generateDeploymentScript'); } export namespace GenerateDeployPlanRequest { export const type = new RequestType('dacfx/generateDeployPlan'); } export namespace GetOptionsFromProfileRequest { export const type = new RequestType('dacfx/getOptionsFromProfile'); } export namespace ValidateStreamingJobRequest { export const type = new RequestType('dacfx/validateStreamingJob'); } // ------------------------------- ------------------------------------ // ------------------------------- ---------------------------------------- export interface CreateCentralManagementServerParams { registeredServerName: string; registeredServerDescription: string; connectParams: ConnectParams; } export interface ListRegisteredServersParams extends RegisteredServerParamsBase { // same as base } export interface AddRegisteredServerParams extends RegisteredServerParamsBase { registeredServerName: string; registeredServerDescription: string; registeredServerConnectionDetails: azdata.ConnectionInfo; } export interface RemoveRegisteredServerParams extends RegisteredServerParamsBase { registeredServerName: string; } export interface AddServerGroupParams extends RegisteredServerParamsBase { groupName: string; groupDescription: string; } export interface RemoveServerGroupParams extends RegisteredServerParamsBase { groupName: string; } export interface RegisteredServerParamsBase { parentOwnerUri: string; relativePath: string; } export namespace CreateCentralManagementServerRequest { export const type = new RequestType('cms/createCms'); } export namespace ListRegisteredServersRequest { export const type = new RequestType('cms/listRegisteredServers'); } export namespace AddRegisteredServerRequest { export const type = new RequestType('cms/addRegisteredServer'); } export namespace RemoveRegisteredServerRequest { export const type = new RequestType('cms/removeRegisteredServer'); } export namespace AddServerGroupRequest { export const type = new RequestType('cms/addCmsServerGroup'); } export namespace RemoveServerGroupRequest { export const type = new RequestType('cms/removeCmsServerGroup'); } // ------------------------------- ---------------------------------------- // ------------------------------- ----------------------------- export interface LanguageExtensionRequestParam { ownerUri: string; } export interface ExternalLanguageRequestParam extends LanguageExtensionRequestParam { languageName: string; } export interface ExternalLanguageUpdateRequestParam extends LanguageExtensionRequestParam { language: mssql.ExternalLanguage; } export interface LanguageExtensionListResponseParam { languages: mssql.ExternalLanguage[]; } export interface ExternalLanguageResponseParam { } export namespace LanguageExtensibilityListRequest { export const type = new RequestType('languageExtension/list'); } export namespace LanguageExtensibilityDeleteRequest { export const type = new RequestType('languageExtension/delete'); } export namespace LanguageExtensibilityUpdateRequest { export const type = new RequestType('languageExtension/update'); } // ------------------------------- ----------------------------- export interface SchemaCompareParams { operationId: string; sourceEndpointInfo: mssql.SchemaCompareEndpointInfo; targetEndpointInfo: mssql.SchemaCompareEndpointInfo; taskExecutionMode: TaskExecutionMode; deploymentOptions: mssql.DeploymentOptions; } export interface SchemaCompareGenerateScriptParams { operationId: string; targetServerName: string; targetDatabaseName: string; taskExecutionMode: TaskExecutionMode; } export interface SchemaComparePublishChangesParams { operationId: string; targetServerName: string; targetDatabaseName: string; taskExecutionMode: TaskExecutionMode; } export interface SchemaCompareGetOptionsParams { } export interface SchemaCompareNodeParams { operationId: string; diffEntry: mssql.DiffEntry; includeRequest: boolean; taskExecutionMode: TaskExecutionMode; } export interface SchemaCompareOpenScmpParams { filePath: string; } export interface SchemaCompareSaveScmpParams { sourceEndpointInfo: mssql.SchemaCompareEndpointInfo; targetEndpointInfo: mssql.SchemaCompareEndpointInfo; taskExecutionMode: TaskExecutionMode; deploymentOptions: mssql.DeploymentOptions; scmpFilePath: string; excludedSourceObjects: mssql.SchemaCompareObjectId[]; excludedTargetObjects: mssql.SchemaCompareObjectId[]; } export interface SchemaCompareCancelParams { operationId: string; } export namespace SchemaCompareRequest { export const type = new RequestType('schemaCompare/compare'); } export namespace SchemaCompareGenerateScriptRequest { export const type = new RequestType('schemaCompare/generateScript'); } export namespace SchemaComparePublishChangesRequest { export const type = new RequestType('schemaCompare/publish'); } export namespace SchemaCompareGetDefaultOptionsRequest { export const type = new RequestType('schemaCompare/getDefaultOptions'); } export namespace SchemaCompareIncludeExcludeNodeRequest { export const type = new RequestType('schemaCompare/includeExcludeNode'); } export namespace SchemaCompareOpenScmpRequest { export const type = new RequestType('schemaCompare/openScmp'); } export namespace SchemaCompareSaveScmpRequest { export const type = new RequestType('schemaCompare/saveScmp'); } export namespace SchemaCompareCancellationRequest { export const type = new RequestType('schemaCompare/cancel'); } // ------------------------------- ----------------------------- /// ------------------------------- ----------------------------- export interface SqlAssessmentParams { ownerUri: string; targetType: azdata.sqlAssessment.SqlAssessmentTargetType } export interface GenerateSqlAssessmentScriptParams { items: azdata.SqlAssessmentResultItem[]; taskExecutionMode: azdata.TaskExecutionMode; targetServerName: string; targetDatabaseName: string; } export namespace SqlAssessmentInvokeRequest { export const type = new RequestType('assessment/invoke'); } export namespace GetSqlAssessmentItemsRequest { export const type = new RequestType('assessment/getAssessmentItems'); } export namespace GenerateSqlAssessmentScriptRequest { export const type = new RequestType('assessment/generateScript'); } // ------------------------------- ----------------------------- // ------------------------------- ----------------------------- export namespace SerializeDataStartRequest { export const type = new RequestType('serialize/start'); } export namespace SerializeDataContinueRequest { export const type = new RequestType('serialize/continue'); } // ------------------------------- ----------------------------- // ------------------------------- < Load Completion Extension Request > ------------------------------------ /** * Completion extension load parameters */ export class CompletionExtensionParams { /// /// Absolute path for the assembly containing the completion extension /// public assemblyPath: string; /// /// The type name for the completion extension /// public typeName: string; /// /// Property bag for initializing the completion extension /// public properties: {}; } export namespace CompletionExtLoadRequest { export const type = new RequestType('completion/extLoad'); } // ------------------------------- < Load Completion Extension Request > ------------------------------------ /// ------------------------------- ----------------------------- export interface ConvertNotebookToSqlParams { content: string; } export namespace ConvertNotebookToSqlRequest { export const type = new RequestType('notebookconvert/convertnotebooktosql'); } export interface ConvertNotebookToSqlResult extends azdata.ResultStatus { content: string; } export interface ConvertSqlToNotebookParams { clientUri: string; } export namespace ConvertSqlToNotebookRequest { export const type = new RequestType('notebookconvert/convertsqltonotebook'); } export interface ConvertSqlToNotebookResult extends azdata.ResultStatus { content: string; } // ------------------------------- ----------------------------- // ------------------------------- < SQL Profiler > ------------------------------------ /** * Parameters to start a profiler session */ export interface CreateXEventSessionParams { /** * Session Owner URI */ ownerUri: string; /** * Session name */ sessionName: string; /** * Profiler Session template */ template: ProfilerSessionTemplate; } export interface CreateXEventSessionResponse { } /** * Parameters to start a profiler session */ export interface StartProfilingParams { /** * Session Owner URI */ ownerUri: string; /** * Session name */ sessionName: string; } export interface StartProfilingResponse { } /** * Parameters to stop a profiler session */ export interface StopProfilingParams { /** * Session Owner URI */ ownerUri: string; } export interface StopProfilingResponse { } /** * Parameters to pause a profiler session */ export interface PauseProfilingParams { /** * Session Owner URI */ ownerUri: string; } export interface PauseProfilingResponse { } /** * Parameters to get a list of XEvent sessions */ export interface GetXEventSessionsParams { /** * Session Owner URI */ ownerUri: string; } export interface GetXEventSessionsResponse { /** * List of all running XEvent Sessions on target server */ sessions: string[]; } export interface DisconnectSessionParams { /** * Session Owner URI */ ownerUri: string; } export interface DisconnectSessionResponse { } /** * Profiler Event */ export interface ProfilerEvent { /** * Event class name */ name: string; /** * Event timestamp */ timestamp: string; /** * Event values */ values: {}; } /** * Profiler Session Template */ export interface ProfilerSessionTemplate { /** * Template name */ name: string; /** * Default view for template */ defaultView: string; /** * TSQL for creating a session */ createStatement: string; } /** * Profiler events available notification parameters */ export interface ProfilerEventsAvailableParams { /** * Session owner URI */ ownerUri: string; /** * New profiler events available */ events: ProfilerEvent[]; /** * If events may have been dropped */ eventsLost: boolean; } /** * Profiler events available notification parameters */ export interface ProfilerSessionStoppedParams { /** * Session owner URI */ ownerUri: string; /** * Stopped session Id */ sessionId: number; } /** * Profiler session created notification parameters */ export interface ProfilerSessionCreatedParams { /** * Session owner URI */ ownerUri: string; /** * Created session name */ sessionName: string; /** * Template used to create session */ templateName: string; } export namespace CreateXEventSessionRequest { export const type = new RequestType('profiler/createsession'); } export namespace StartProfilingRequest { export const type = new RequestType('profiler/start'); } export namespace StopProfilingRequest { export const type = new RequestType('profiler/stop'); } export namespace PauseProfilingRequest { export const type = new RequestType('profiler/pause'); } export namespace GetXEventSessionsRequest { export const type = new RequestType('profiler/getsessions'); } export namespace DisconnectSessionRequest { export const type = new RequestType('profiler/disconnect'); } export namespace ProfilerEventsAvailableNotification { export const type = new NotificationType('profiler/eventsavailable'); } export namespace ProfilerSessionStoppedNotification { export const type = new NotificationType('profiler/sessionstopped'); } export namespace ProfilerSessionCreatedNotification { export const type = new NotificationType('profiler/sessioncreated'); } // ------------------------------- < SQL Profiler > ------------------------------------ /// ------------------------------- ----------------------------- export interface SqlAssessmentResult extends azdata.ResultStatus { items: mssql.SqlMigrationAssessmentResultItem[]; } export interface SqlMigrationAssessmentParams { ownerUri: string; } export namespace GetSqlMigrationAssessmentItemsRequest { export const type = new RequestType('migration/getassessments'); } // ------------------------------- -----------------------------