/** * Copyright (c) 2020-present, Goldman Sachs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { type ContentType, type PlainObject } from '@finos/legend-shared'; import type { RawLambda } from '../../../../../graph/metamodel/pure/rawValueSpecification/RawLambda.js'; import { type GenerationMode, type GenerationConfigurationDescription, } from '../../../../action/generation/GenerationConfigurationDescription.js'; import { type V1_GrammarParserBatchInputEntry } from './V1_EngineServerClient.js'; import { type V1_PureModelContextData } from '../model/context/V1_PureModelContextData.js'; import { type V1_LambdaReturnTypeInput } from './compilation/V1_LambdaReturnType.js'; import type { V1_RawLambda } from '../model/rawValueSpecification/V1_RawLambda.js'; import { type V1_GenerationOutput } from './generation/V1_GenerationOutput.js'; import type { V1_RawRelationalOperationElement } from '../model/packageableElements/store/relational/model/V1_RawRelationalOperationElement.js'; import type { RawRelationalOperationElement } from '../../../../../graph/metamodel/pure/packageableElements/store/relational/model/RawRelationalOperationElement.js'; import type { PureProtocolProcessorPlugin } from '../../PureProtocolProcessorPlugin.js'; import { type V1_LightQuery, type V1_Query } from './query/V1_Query.js'; import { type V1_DatabaseBuilderInput } from './generation/V1_DatabaseBuilderInput.js'; import { type V1_ServiceConfigurationInfo } from './service/V1_ServiceConfiguration.js'; import { type V1_ExecuteInput, type V1_TestDataGenerationExecutionInput, type V1_TestDataGenerationExecutionWithSeedInput, } from './execution/V1_ExecuteInput.js'; import type { V1_ExecutionPlan } from '../model/executionPlan/V1_ExecutionPlan.js'; import { type V1_ExecutionResult } from './execution/V1_ExecutionResult.js'; import { type V1_ServiceStorage } from './service/V1_ServiceStorage.js'; import { type V1_ServiceRegistrationResult } from './service/V1_ServiceRegistrationResult.js'; import type { V1_PureModelContext } from '../model/context/V1_PureModelContext.js'; import { type V1_QuerySearchSpecification } from './query/V1_QuerySearchSpecification.js'; import type { ExecutionOptions, TEMPORARY__EngineSetupConfig, } from '../../../../AbstractPureGraphManager.js'; import type { ExternalFormatDescription } from '../../../../action/externalFormat/ExternalFormatDescription.js'; import { type V1_ExternalFormatModelGenerationInput } from './externalFormat/V1_ExternalFormatModelGeneration.js'; import { type V1_RunTestsInput } from './test/V1_RunTestsInput.js'; import { type V1_RunTestsResult } from './test/V1_RunTestsResult.js'; import { type V1_MappingModelCoverageAnalysisInput, type V1_MappingModelCoverageAnalysisResult, } from './analytics/V1_MappingModelCoverageAnalysis.js'; import type { ServiceExecutionMode } from '../../../../action/service/ServiceExecutionMode.js'; import type { V1_CompilationResult, V1_TextCompilationResult, } from './compilation/V1_CompilationResult.js'; import { type V1_GenerateSchemaInput } from './externalFormat/V1_GenerateSchemaInput.js'; import type { GraphManagerOperationReport } from '../../../../GraphManagerStatistics.js'; import { type V1_StoreEntitlementAnalysisInput, type V1_DatasetEntitlementReport, type V1_DatasetSpecification, type V1_EntitlementReportAnalyticsInput, } from './analytics/V1_StoreEntitlementAnalysis.js'; import type { V1_SourceInformation } from '../model/V1_SourceInformation.js'; import type { ClassifierPathMapping, SubtypeInfo, } from '../../../../action/protocol/ProtocolInfo.js'; import { type V1_FunctionActivatorInfo } from './functionActivator/V1_FunctionActivatorInfo.js'; import { type V1_FunctionActivatorInput } from './functionActivator/V1_FunctionActivatorInput.js'; import { type V1_RawSQLExecuteInput } from './execution/V1_RawSQLExecuteInput.js'; import type { V1_ValueSpecification } from '../model/valueSpecification/V1_ValueSpecification.js'; import { type V1_ArtifactGenerationExtensionOutput, type V1_ArtifactGenerationExtensionInput, } from './generation/V1_ArtifactGenerationExtensionApi.js'; import { type V1_DatabaseToModelGenerationInput } from './relational/V1_DatabaseToModelGenerationInput.js'; import { type V1_TestDataGenerationInput } from './service/V1_TestDataGenerationInput.js'; import { type V1_TestDataGenerationResult } from './service/V1_TestDataGenerationResult.js'; import { type V1_RelationalConnectionBuilder } from './relational/V1_RelationalConnectionBuilder.js'; import type { PostValidationAssertionResult } from '../../../../../DSL_Service_Exports.js'; import { type V1_DebugTestsResult } from './test/V1_DebugTestsResult.js'; import type { TEMPORARY__AbstractEngineConfig } from '../../../../action/TEMPORARY__AbstractEngineConfig.js'; import type { RelationTypeMetadata } from '../../../../action/relation/RelationTypeMetadata.js'; import type { V1_CompleteCodeInput } from './compilation/V1_CompleteCodeInput.js'; import type { CodeCompletionResult } from '../../../../action/compilation/Completion.js'; import type { DeploymentResult } from '../../../../action/DeploymentResult.js'; import type { LightPersistentDataCube, PersistentDataCube, } from '../../../../action/query/PersistentDataCube.js'; import type { V1_LineageInput, V1_RawLineageModel, } from '../model/lineage/V1_Lineage.js'; import type { V1_DevMetadataPushRequest } from './dev-metadata/V1_DevMetadataPushRequest.js'; import type { DeployProjectResponse } from '../../../../action/dev-metadata/DeployProjectResponse.js'; export interface V1_GraphManagerEngine { config: TEMPORARY__AbstractEngineConfig; setup: (config: TEMPORARY__EngineSetupConfig) => Promise; // ------------------------------------------- Protocol ------------------------------------------- getClassifierPathMapping: () => Promise; getSubtypeInfo: () => Promise; // ------------------------------------------- Grammar ------------------------------------------- transformPureModelContextDataToCode: ( graph: V1_PureModelContextData, pretty: boolean, ) => Promise; transformCodeToPureModelContextData: ( code: string, options?: { sourceInformationIndex?: Map | undefined; onError?: () => void; }, ) => Promise; transformLambdasToCode: ( input: Map, pretty: boolean, plugins: PureProtocolProcessorPlugin[], ) => Promise>; transformValueSpecificationsToCode: ( input: Record>, pretty: boolean, ) => Promise>; transformValueSpecificationToCode: ( input: PlainObject, pretty: boolean, ) => Promise; transformCodeToValueSpecifications: ( input: Record, ) => Promise>; transformCodeToValueSpecification: ( code: string, returnSourceInformation?: boolean, ) => Promise>; transformLambdaToCode: ( lambda: RawLambda, pretty: boolean, plugins: PureProtocolProcessorPlugin[], ) => Promise; prettyLambdaContent: (lambda: string) => Promise; transformCodeToLambda: ( code: string, lambdaId?: string, options?: { pruneSourceInformation?: boolean; }, ) => Promise; transformRelationalOperationElementsToPureCode: ( input: Map, ) => Promise>; transformPureCodeToRelationalOperationElement: ( code: string, operationId: string, ) => Promise; // ------------------------------------------- Compile ------------------------------------------- compilePureModelContextData: ( model: V1_PureModelContext, options?: { onError?: (() => void) | undefined } | undefined, ) => Promise; compileText: ( graphText: string, TEMPORARY__report: GraphManagerOperationReport, compileContext?: V1_PureModelContextData, options?: { onError?: () => void; getCompilationWarnings?: boolean }, ) => Promise; combineTextAndPMCD: ( graphText: string, compileContext: V1_PureModelContextData, ) => Promise; getLambdaReturnType: ( lambdaReturnInput: V1_LambdaReturnTypeInput, ) => Promise; getLambdaReturnTypeFromRawInput: ( rawInput: PlainObject, ) => Promise; getLambdaRelationTypeFromRawInput( rawInput: V1_LambdaReturnTypeInput, ): Promise; getCodeCompletion( rawInput: V1_CompleteCodeInput, ): Promise; // --------------------------------------------- Execution --------------------------------------------- runQuery: ( input: V1_ExecuteInput, options?: ExecutionOptions, ) => Promise<{ executionResult: V1_ExecutionResult; executionTraceId?: string; }>; exportData: ( input: V1_ExecuteInput, options?: ExecutionOptions, contentType?: ContentType, ) => Promise; runQueryAndReturnMap: ( input: V1_ExecuteInput, options?: ExecutionOptions, ) => Promise>; parseExecutionResults: ( executionResultTxt: string, options: ExecutionOptions | undefined, ) => PlainObject; generateExecutionPlan: ( input: V1_ExecuteInput, ) => Promise>; generateLineage: ( input: V1_LineageInput, ) => Promise>; debugExecutionPlanGeneration: ( input: V1_ExecuteInput, ) => Promise<{ plan: PlainObject; debug: string[] }>; generateExecuteTestData: ( input: V1_TestDataGenerationExecutionInput, ) => Promise; generateExecuteTestDataWithSeedData: ( input: V1_TestDataGenerationExecutionWithSeedInput, ) => Promise; // --------------------------------------------- Test --------------------------------------------- runTests: (input: V1_RunTestsInput) => Promise; debugTests: (input: V1_RunTestsInput) => Promise; // ------------------------------------------- Generation ------------------------------------------- generateArtifacts: ( input: V1_ArtifactGenerationExtensionInput, ) => Promise; // --------------------------------------------- Test Data Generation --------------------------------------------- generateTestData: ( input: V1_TestDataGenerationInput, plugins: PureProtocolProcessorPlugin[], ) => Promise; // ------------------------------------------- File Generation ------------------------------------------- getAvailableGenerationConfigurationDescriptions: () => Promise< GenerationConfigurationDescription[] >; generateFile: ( configs: PlainObject, type: string, generationMode: GenerationMode, model: V1_PureModelContextData, ) => Promise; // ------------------------------------------- External Format ----------------------------------------- getAvailableExternalFormatsDescriptions: () => Promise< ExternalFormatDescription[] >; generateModel: ( input: V1_ExternalFormatModelGenerationInput, ) => Promise; generateSchema: ( input: V1_GenerateSchemaInput, ) => Promise; // ------------------------------------------- Service ------------------------------------------- getServerServiceInfo: () => Promise; registerService: ( input: V1_PureModelContext, server: string, executionMode: ServiceExecutionMode, TEMPORARY__useStoreModel: boolean, TEMPORARY__useGenerateLineage: boolean, TEMPORARY__useGenerateOpenApi: boolean, ) => Promise; getServiceVersionInfo: ( serviceUrl: string, serviceId: string, ) => Promise; activateServiceGeneration: ( serviceUrl: string, generationId: string, ) => Promise; getServiceMetadataByPattern: ( serviceServerUrl: string, servicePattern: string, ) => Promise; runServicePostVal: ( servicePath: string, input: V1_PureModelContext, assertionId: string, ) => Promise; // ------------------------------------------- Query ------------------------------------------- searchQueries: ( searchSpecification: V1_QuerySearchSpecification, ) => Promise; getQueries: (queryIds: string[]) => Promise; getQuery: (queryId: string) => Promise; createQuery: (query: V1_Query) => Promise; updateQuery: (query: V1_Query) => Promise; patchQuery: (query: Partial) => Promise; deleteQuery: (queryId: string) => Promise; cancelUserExecutions: (broadcastToCluster: boolean) => Promise; getCurrentUserId: () => string | undefined; // ------------------------------------------- DataCube ------------------------------------------- searchDataCubes: ( searchSpecification: V1_QuerySearchSpecification, ) => Promise; getDataCubes: (ids: string[]) => Promise; getDataCube: (id: string) => Promise; createDataCube: (dataCube: PersistentDataCube) => Promise; updateDataCube: (dataCube: PersistentDataCube) => Promise; deleteDataCube: (id: string) => Promise; // ------------------------------------------ Analysis ------------------------------------------ analyzeMappingModelCoverage: ( input: V1_MappingModelCoverageAnalysisInput, ) => Promise; surveyDatasets: ( input: V1_StoreEntitlementAnalysisInput, plugins: PureProtocolProcessorPlugin[], ) => Promise; checkDatasetEntitlements: ( input: V1_EntitlementReportAnalyticsInput, plugins: PureProtocolProcessorPlugin[], ) => Promise; buildDatabase: ( input: V1_DatabaseBuilderInput, plugins: PureProtocolProcessorPlugin[], ) => Promise; executeRawSQL: ( input: V1_RawSQLExecuteInput, plugins: PureProtocolProcessorPlugin[], ) => Promise; // ------------------------------------------- Function ------------------------------------------- getAvailableFunctionActivators: () => Promise; validateFunctionActivator: ( input: V1_FunctionActivatorInput, ) => Promise; renderFunctionActivatorArtifact: ( input: V1_FunctionActivatorInput, ) => Promise; publishFunctionActivatorToSandbox: ( input: V1_FunctionActivatorInput, ) => Promise; // ------------------------------------------- Relational ------------------------------------------- generateModelsFromDatabaseSpecification: ( input: V1_DatabaseToModelGenerationInput, ) => Promise; getAvailableRelationalDatabaseTypeConfigurations: () => Promise< V1_RelationalConnectionBuilder[] >; // ------------------------------------------- Dev Mode ------------------------------------------- pushToDevMetadata( request: V1_DevMetadataPushRequest, ): Promise; }