resolveVariableValue static method
Implementation
static Object? resolveVariableValue(
Object value, Map<String, dynamic>? variables, List<SQL>? executedSqls) {
if (value is List) {
return value.map((e) {
if (WithVariables.isVariableValue(e)) {
return resolveVariableValue(e, variables, executedSqls);
} else {
return e;
}
}).toList();
}
var s = value.toString();
if (s.startsWith('%') && s.endsWith('%')) {
var name = s.substring(1, s.length - 1);
var v = variables?[name];
return v;
} else if (s.startsWith('#') && s.endsWith('#')) {
var ref = s.substring(1, s.length - 1);
var refParts = ref.split(':');
var refTable = refParts[0];
var refSqlID = refParts[1];
var refSql = executedSqls?.firstWhereOrNull(
(sql) => sql.table == refTable && sql.sqlID == refSqlID);
if (refSql != null) {
var v = refSql.lastID ?? refSql.results;
return v;
}
} else {
var v = WithVariables.replaceVariables(s, (m) {
var variable = m.group(1)!;
var val = resolveVariableValue(variable, variables, executedSqls);
return val?.toString() ?? 'null';
});
return v;
}
return null;
}