compute static method
Implementation
static List<DbLensDiffField> compute({
String? beforeJson,
String? afterJson,
List<String>? changedColumns,
}) {
final before = _tryParse(beforeJson);
final after = _tryParse(afterJson);
final keys = <String>{...before.keys, ...after.keys}.toList()..sort();
final changedSet = changedColumns?.toSet();
return keys.map((key) {
final hasBefore = before.containsKey(key);
final hasAfter = after.containsKey(key);
final DbLensDiffKind kind;
if (hasBefore && !hasAfter) {
kind = DbLensDiffKind.removed;
} else if (!hasBefore && hasAfter) {
kind = DbLensDiffKind.added;
} else if (changedSet != null) {
kind = changedSet.contains(key)
? DbLensDiffKind.changed
: DbLensDiffKind.unchanged;
} else {
kind = jsonEncode(before[key]) != jsonEncode(after[key])
? DbLensDiffKind.changed
: DbLensDiffKind.unchanged;
}
return DbLensDiffField(
key: key,
beforeValue: before[key],
afterValue: after[key],
kind: kind,
);
}).toList();
}