Skip to content

Commit 921a070

Browse files
author
nicosammito
committed
feat: enhance data type and function mappers to include data type identifiers
1 parent 7bc9fb8 commit 921a070

2 files changed

Lines changed: 38 additions & 15 deletions

File tree

package/mapper/src/mapper/dataTypeMapper.ts

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ function getDataType(identifier: string, constructedDataTypes: ConstructedDataTy
6666
console.error("Skipping Identifier because it can't be identified:" + identifier)
6767
return null
6868
}
69+
const dataTypeIdentifiers: DataTypeIdentifier[] = []
6970
const constructed: DataType = {
7071
__typename: "DataType",
7172
id: `gid://sagittarius/DataType/${getID(constructedDataTypes)}`,
@@ -74,7 +75,11 @@ function getDataType(identifier: string, constructedDataTypes: ConstructedDataTy
7475
aliases: getTranslationConnection(tucanaDataType.alias),
7576
displayMessages: getTranslationConnection(tucanaDataType.displayMessage),
7677
name: getTranslationConnection(tucanaDataType.name),
77-
rules: createRules(tucanaDataType.rules, constructedDataTypes),
78+
rules: createRules(tucanaDataType.rules, constructedDataTypes, dataTypeIdentifiers),
79+
dataTypeIdentifiers: {
80+
count: dataTypeIdentifiers.length,
81+
nodes: dataTypeIdentifiers,
82+
},
7883
variant: getDataTypeVariant(tucanaDataType.variant),
7984
}
8085

@@ -84,14 +89,14 @@ function getDataType(identifier: string, constructedDataTypes: ConstructedDataTy
8489
return dataType;
8590
}
8691

87-
function createRules(rule: DefinitionDataTypeRule[], constructedDataTypes: ConstructedDataTypes) : DataTypeRuleConnection {
92+
function createRules(rule: DefinitionDataTypeRule[], constructedDataTypes: ConstructedDataTypes, dataTypeIdentifiers: DataTypeIdentifier[]) : DataTypeRuleConnection {
8893
return {
8994
count: rule.length,
9095
nodes: rule.map(r => {
9196
switch (r.config.oneofKind) {
9297
case "containsType": {
9398
const ruleConfig: DataTypeRulesContainsTypeConfig = {
94-
dataTypeIdentifier: getDataTypeIdentifier(r.config.containsType.dataTypeIdentifier, constructedDataTypes),
99+
dataTypeIdentifierId: registerDataTypeIdentifier(r.config.containsType.dataTypeIdentifier, constructedDataTypes, dataTypeIdentifiers),
95100
}
96101
const rule: DataTypeRule = {
97102
variant: DataTypeRulesVariant.ContainsType,
@@ -101,7 +106,7 @@ function createRules(rule: DefinitionDataTypeRule[], constructedDataTypes: Const
101106
}
102107
case "containsKey": {
103108
const ruleConfig: DataTypeRulesContainsKeyConfig = {
104-
dataTypeIdentifier: getDataTypeIdentifier(r.config.containsKey.dataTypeIdentifier, constructedDataTypes),
109+
dataTypeIdentifierId: registerDataTypeIdentifier(r.config.containsKey.dataTypeIdentifier, constructedDataTypes, dataTypeIdentifiers),
105110
key: r.config.containsKey.key,
106111
}
107112
const rule: DataTypeRule = {
@@ -147,7 +152,7 @@ function createRules(rule: DefinitionDataTypeRule[], constructedDataTypes: Const
147152
inputTypes: r.config.inputTypes.inputTypes.map(i => {
148153
console.log("AF: " + i.inputIdentifier)
149154
const input: DataTypeRulesInputTypeConfig = {
150-
dataTypeIdentifier: getDataTypeIdentifier(i.dataTypeIdentifier, constructedDataTypes),
155+
dataTypeIdentifierId: registerDataTypeIdentifier(i.dataTypeIdentifier, constructedDataTypes, dataTypeIdentifiers),
151156
inputIdentifier: i.inputIdentifier,
152157
}
153158
return input;
@@ -162,7 +167,7 @@ function createRules(rule: DefinitionDataTypeRule[], constructedDataTypes: Const
162167

163168
case "returnType": {
164169
const ruleConfig: DataTypeRulesParentTypeConfig = {
165-
dataTypeIdentifier: getDataTypeIdentifier(r.config.returnType.dataTypeIdentifier, constructedDataTypes),
170+
dataTypeIdentifierId: registerDataTypeIdentifier(r.config.returnType.dataTypeIdentifier, constructedDataTypes, dataTypeIdentifiers),
166171
}
167172
const rule : DataTypeRule = {
168173
variant: DataTypeRulesVariant.ReturnType,
@@ -173,7 +178,7 @@ function createRules(rule: DefinitionDataTypeRule[], constructedDataTypes: Const
173178

174179
case "parentType": {
175180
const ruleConfig: DataTypeRulesParentTypeConfig = {
176-
dataTypeIdentifier: getDataTypeIdentifier(r.config.parentType.parentType, constructedDataTypes),
181+
dataTypeIdentifierId: registerDataTypeIdentifier(r.config.parentType.parentType, constructedDataTypes, dataTypeIdentifiers),
177182
}
178183
const rule : DataTypeRule = {
179184
variant: DataTypeRulesVariant.ParentType,
@@ -209,7 +214,7 @@ function getDataTypeVariant(variant: DefinitionDataType_Variant): DataTypeVarian
209214
}
210215
}
211216

212-
function getDataTypeIdentifier(identifier: TucanaDataTypeIdentifier | undefined, constructedDataTypes: ConstructedDataTypes): DataTypeIdentifier | null {
217+
function getDataTypeIdentifier(identifier: TucanaDataTypeIdentifier | undefined, constructedDataTypes: ConstructedDataTypes, dataTypeIdentifiers: DataTypeIdentifier[]): DataTypeIdentifier | null {
213218
if (identifier == undefined) {
214219
return null
215220
}
@@ -240,8 +245,8 @@ function getDataTypeIdentifier(identifier: TucanaDataTypeIdentifier | undefined,
240245
type: type
241246
}
242247
}),
243-
sourceDataTypeIdentifiers: mapper.source.map(id =>
244-
getDataTypeIdentifier(id, constructedDataTypes)
248+
sourceDataTypeIdentifierIds: mapper.source.map(id =>
249+
registerDataTypeIdentifier(id, constructedDataTypes, dataTypeIdentifiers)
245250
).filter(id => id != null),
246251
target: mapper.target,
247252
id: `gid://sagittarius/GenericMapper/${getID(constructedDataTypes)}`,
@@ -269,6 +274,15 @@ function getDataTypeIdentifier(identifier: TucanaDataTypeIdentifier | undefined,
269274
return null;
270275
}
271276

277+
function registerDataTypeIdentifier(identifier: TucanaDataTypeIdentifier | undefined, constructedDataTypes: ConstructedDataTypes, dataTypeIdentifiers: DataTypeIdentifier[]): string | null {
278+
const mappedIdentifier = getDataTypeIdentifier(identifier, constructedDataTypes, dataTypeIdentifiers);
279+
if (mappedIdentifier == null) {
280+
return null;
281+
}
282+
dataTypeIdentifiers.push(mappedIdentifier);
283+
return mappedIdentifier.id;
284+
}
285+
272286
// @ts-ignore
273287
function valueToJSON(value: Value) {
274288
switch (value.kind.oneofKind) {

package/mapper/src/mapper/functionMapper.ts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
import {FunctionDefinition, ParameterDefinitionConnection} from "@code0-tech/sagittarius-graphql-types";
1+
import {
2+
DataTypeIdentifier,
3+
FunctionDefinition,
4+
ParameterDefinitionConnection
5+
} from "@code0-tech/sagittarius-graphql-types";
26
import {
37
RuntimeFunctionDefinition as TucanaFunction,
48
RuntimeParameterDefinition
@@ -8,6 +12,7 @@ import {ConstructedDataTypes, getID} from "../definition/mapper.js";
812
import {getTranslationConnection} from "./translation.js";
913

1014
export function mapFunction(func: TucanaFunction, constructed: ConstructedDataTypes): FunctionDefinition | null {
15+
const dataTypeIdentifiers: DataTypeIdentifier[] = [];
1116
return {
1217
__typename: "FunctionDefinition",
1318
id: `gid://sagittarius/FunctionDefinition/${getID(constructed)}`,
@@ -20,16 +25,20 @@ export function mapFunction(func: TucanaFunction, constructed: ConstructedDataTy
2025
displayMessages: getTranslationConnection(func.displayMessage),
2126
aliases: getTranslationConnection(func.alias),
2227
throwsError: func.throwsError,
23-
returnType: getDataTypeIdentifier(func.returnTypeIdentifier, constructed),
24-
parameterDefinitions: getParameterDefinitionConnection(func.runtimeParameterDefinitions, constructed),
28+
returnType: getDataTypeIdentifier(func.returnTypeIdentifier, constructed, dataTypeIdentifiers),
29+
parameterDefinitions: getParameterDefinitionConnection(func.runtimeParameterDefinitions, constructed, dataTypeIdentifiers),
30+
dataTypeIdentifiers: {
31+
count: dataTypeIdentifiers.length,
32+
nodes: dataTypeIdentifiers
33+
},
2534
runtimeFunctionDefinition: {
2635
id: `gid://sagittarius/RuntimeFunctionDefinition/${getID(constructed)}`,
2736
identifier: func.runtimeName
2837
}
2938
}
3039
}
3140

32-
function getParameterDefinitionConnection(def: RuntimeParameterDefinition[], constructed: ConstructedDataTypes): ParameterDefinitionConnection {
41+
function getParameterDefinitionConnection(def: RuntimeParameterDefinition[], constructed: ConstructedDataTypes, dataTypeIdentifiers: DataTypeIdentifier[]): ParameterDefinitionConnection {
3342
return {
3443
count: def.length,
3544
nodes: def.map(node => {
@@ -40,7 +49,7 @@ function getParameterDefinitionConnection(def: RuntimeParameterDefinition[], con
4049
identifier: node.runtimeName,
4150
descriptions: getTranslationConnection(node.description),
4251
documentations: getTranslationConnection(node.documentation),
43-
dataTypeIdentifier: getDataTypeIdentifier(node.dataTypeIdentifier, constructed)
52+
dataTypeIdentifier: getDataTypeIdentifier(node.dataTypeIdentifier, constructed, dataTypeIdentifiers)
4453
}
4554
})
4655
}

0 commit comments

Comments
 (0)