RulesResult.fromMap constructor
Creates a result from map data
Implementation
factory RulesResult.fromMap(Map<String, dynamic> mapResult,
{dynamic rawResult}) {
if (mapResult.containsKey('error')) {
return RulesResult.error(mapResult['error'].toString());
}
final tags = <TagResult>[];
final variables = <VariableResult>[];
final actions = <ActionResult>[];
final metrics = <MetricResult>[];
// Engine produces modern array format, just convert to typed objects
void addFromList<T>(List<T> target, List? source,
T? Function(Map<String, dynamic>) create) {
if (source is List) {
for (final item in source) {
if (item is Map<String, dynamic>) {
try {
final result = create(item);
if (result != null) {
target.add(result);
}
} catch (_) {
// Skip malformed items
}
}
}
}
}
addFromList(tags, mapResult['tags'], (data) => TagResult.tryFromMap(data));
addFromList(variables, mapResult['variables'],
(data) => VariableResult.tryFromMap(data));
addFromList(
actions, mapResult['actions'], (data) => ActionResult.tryFromMap(data));
addFromList(
metrics, mapResult['metrics'], (data) => MetricResult.tryFromMap(data));
return RulesResult(
tags: tags,
variables: variables,
actions: actions,
metrics: metrics,
rawResult: rawResult,
);
}