resolveLastInsertID method
Implementation
Object? resolveLastInsertID(Object? id,
{Map<String, dynamic>? valuesNamed, List<SQL>? executedSqls}) {
if (id != null) {
if (id is num) {
if (id != 0) return id;
} else if (id is String) {
if (id.isNotEmpty) return id;
}
}
var returnColumn = returnColumns.keys.firstOrNull;
var val = valuesNamed?[returnColumn] ?? parameters[returnColumn];
if (val == null) {
return null;
}
if (val is int) {
return val;
} else if (val is List) {
var valSQL = val.firstOrNull ?? '';
var n = parseInt(valSQL);
if (n != null) return n;
if (WithVariables.isVariableValue(valSQL)) {
valSQL = SQL.resolveVariableValue(valSQL, variables, executedSqls);
}
var operation =
RegExp(r'^\s*(-?\d+)\s*([+-])\s*(-?\d+)\s*$', dotAll: true)
.firstMatch(valSQL);
if (operation != null) {
var a = parseInt(operation.group(1));
var op = operation.group(2)!;
var b = parseInt(operation.group(3));
if (a != null && b != null) {
if (op == '+') {
return a + b;
} else if (op == '-') {
return a - b;
}
}
}
return null;
} else {
return parseInt(val);
}
}