Introduce type for modeled method with signature

This commit is contained in:
Koen Vlaswinkel
2023-04-06 16:33:43 +02:00
parent 0d00e5c5b7
commit d5403ad926
4 changed files with 38 additions and 28 deletions

View File

@@ -281,7 +281,7 @@ export class DataExtensionsEditorView extends AbstractWebview<
const modeledMethodsByName: Record<string, ModeledMethod> = {};
for (const result of results) {
modeledMethodsByName[result[0]] = result[1];
modeledMethodsByName[result.signature] = result.modeledMethod;
}
await this.postMessage({

View File

@@ -7,7 +7,10 @@ import { extLogger, TeeLogger } from "../common";
import { extensiblePredicateDefinitions } from "./yaml";
import { ProgressCallback } from "../progress";
import { getOnDiskWorkspaceFolders } from "../helpers";
import { ModeledMethod, ModeledMethodType } from "./modeled-method";
import {
ModeledMethodType,
ModeledMethodWithSignature,
} from "./modeled-method";
class FlowModelGenerator {
constructor(
@@ -24,7 +27,7 @@ class FlowModelGenerator {
type: Exclude<ModeledMethodType, "none">,
queryName: string,
queryStep: number,
): Promise<Array<[string, ModeledMethod]> | undefined> {
): Promise<ModeledMethodWithSignature[] | undefined> {
const definition = extensiblePredicateDefinitions[type];
const query = join(
@@ -72,7 +75,7 @@ class FlowModelGenerator {
const results = decodedResults.tuples;
return results.map((result): [string, ModeledMethod] => {
return results.map((result) => {
const row = result[0] as string;
return definition.readModeledMethod(row.split(";"));
@@ -80,9 +83,7 @@ class FlowModelGenerator {
}
async run(
onResults: (
results: Array<[string, ModeledMethod]>,
) => void | Promise<void>,
onResults: (results: ModeledMethodWithSignature[]) => void | Promise<void>,
) {
const summaryResults = await this.getAddsTo(
"summary",
@@ -124,7 +125,7 @@ export async function generateFlowModel(
queryStorageDir: string,
qlDir: string,
databaseItem: DatabaseItem,
onResults: (results: Array<[string, ModeledMethod]>) => void | Promise<void>,
onResults: (results: ModeledMethodWithSignature[]) => void | Promise<void>,
progress: ProgressCallback,
token: CancellationToken,
) {

View File

@@ -11,3 +11,8 @@ export type ModeledMethod = {
output: string;
kind: string;
};
export type ModeledMethodWithSignature = {
signature: string;
modeledMethod: ModeledMethod;
};

View File

@@ -1,5 +1,9 @@
import { ExternalApiUsage } from "./external-api-usage";
import { ModeledMethod, ModeledMethodType } from "./modeled-method";
import {
ModeledMethod,
ModeledMethodType,
ModeledMethodWithSignature,
} from "./modeled-method";
type ExternalApiUsageByType = {
externalApiUsage: ExternalApiUsage;
@@ -9,7 +13,7 @@ type ExternalApiUsageByType = {
type ExtensiblePredicateDefinition = {
extensiblePredicate: string;
generateMethodDefinition: (method: ExternalApiUsageByType) => any[];
readModeledMethod: (row: any[]) => [string, ModeledMethod];
readModeledMethod: (row: any[]) => ModeledMethodWithSignature;
};
function readRowToMethod(row: any[]): string {
@@ -37,15 +41,15 @@ export const extensiblePredicateDefinitions: Record<
method.modeledMethod.kind,
"manual",
],
readModeledMethod: (row) => [
readRowToMethod(row),
{
readModeledMethod: (row) => ({
signature: readRowToMethod(row),
modeledMethod: {
type: "source",
input: "",
output: row[6],
kind: row[7],
},
],
}),
},
sink: {
extensiblePredicate: "sinkModel",
@@ -64,15 +68,15 @@ export const extensiblePredicateDefinitions: Record<
method.modeledMethod.kind,
"manual",
],
readModeledMethod: (row) => [
readRowToMethod(row),
{
readModeledMethod: (row) => ({
signature: readRowToMethod(row),
modeledMethod: {
type: "sink",
input: row[6],
output: "",
kind: row[7],
},
],
}),
},
summary: {
extensiblePredicate: "summaryModel",
@@ -92,15 +96,15 @@ export const extensiblePredicateDefinitions: Record<
method.modeledMethod.kind,
"manual",
],
readModeledMethod: (row) => [
readRowToMethod(row),
{
readModeledMethod: (row) => ({
signature: readRowToMethod(row),
modeledMethod: {
type: "summary",
input: row[6],
output: row[7],
kind: row[8],
},
],
}),
},
neutral: {
extensiblePredicate: "neutralModel",
@@ -114,15 +118,15 @@ export const extensiblePredicateDefinitions: Record<
method.externalApiUsage.methodParameters,
"manual",
],
readModeledMethod: (row) => [
`${row[0]}.${row[1]}#${row[2]}${row[3]}`,
{
readModeledMethod: (row) => ({
signature: `${row[0]}.${row[1]}#${row[2]}${row[3]}`,
modeledMethod: {
type: "neutral",
input: "",
output: "",
kind: "",
},
],
}),
},
};
@@ -227,9 +231,9 @@ export function loadDataExtensionYaml(
continue;
}
const [apiInfo, modeledMethod] = result;
const { signature, modeledMethod } = result;
modeledMethods[apiInfo] = modeledMethod;
modeledMethods[signature] = modeledMethod;
}
}