Populate enum messages in nested lists/maps

This commit is contained in:
2024-08-17 14:30:11 +09:30
parent e7d895567a
commit 3adbcfdc1c
3 changed files with 67 additions and 13 deletions

View File

@@ -93,11 +93,11 @@ export class ProtoDefinitionService {
configuration = listConfiguration.subConfiguration;
}
} else if (value.configuration.type === MessageTypeEnum.Map) {
const listConfiguration = value.configuration as MapMessage;
const mapConfiguration = value.configuration as MapMessage;
if (
listConfiguration.valueConfiguration.type === MessageTypeEnum.Object
mapConfiguration.valueConfiguration.type === MessageTypeEnum.Object
) {
configuration = listConfiguration.valueConfiguration;
configuration = mapConfiguration.valueConfiguration;
}
}
if (configuration) {
@@ -119,6 +119,26 @@ export class ProtoDefinitionService {
value.configuration as ObjectMessage,
enumMessages
);
} else if (value.configuration.type === MessageTypeEnum.List) {
const listConfiguration = value.configuration as ListMessage;
if (
listConfiguration.subConfiguration.type === MessageTypeEnum.Object
) {
listConfiguration.subConfiguration = this.populateEnumMessages(
listConfiguration.subConfiguration as ObjectMessage,
enumMessages
);
}
} else if (value.configuration.type === MessageTypeEnum.Map) {
const mapConfiguration = value.configuration as MapMessage;
if (
mapConfiguration.valueConfiguration.type === MessageTypeEnum.Object
) {
mapConfiguration.valueConfiguration = this.populateEnumMessages(
mapConfiguration.valueConfiguration as ObjectMessage,
enumMessages
);
}
}
}
}
@@ -159,17 +179,44 @@ export class ProtoDefinitionService {
}
}
objectMessage.messageDefinition.values =
objectMessage.messageDefinition.values.map((obj) =>
obj.configuration.type === MessageTypeEnum.Object
? {
objectMessage.messageDefinition.values.map((obj) => {
if (obj.configuration.type === MessageTypeEnum.Object) {
return {
...obj,
configuration: this.populateEnumMessages(
obj.configuration as ObjectMessage,
enumMessages
),
};
} else if (obj.configuration.type === MessageTypeEnum.List) {
const listConfiguration = obj.configuration as ListMessage;
if (
listConfiguration.subConfiguration.type === MessageTypeEnum.Object
) {
return {
...obj,
configuration: this.populateEnumMessages(
obj.configuration as ObjectMessage,
subConfiguration: this.populateEnumMessages(
listConfiguration.subConfiguration as ObjectMessage,
enumMessages
),
}
: obj
);
};
}
} else if (obj.configuration.type === MessageTypeEnum.Map) {
const mapConfiguration = obj.configuration as MapMessage;
if (
mapConfiguration.valueConfiguration.type === MessageTypeEnum.Object
) {
return {
...obj,
valueConfiguration: this.populateEnumMessages(
mapConfiguration.valueConfiguration as ObjectMessage,
enumMessages
),
};
}
}
return obj;
});
return objectMessage;
}