addOperation method
OpResult?
addOperation(
- OperationType operationType,
- dynamic parent,
- String? columnName,
- dynamic children, [
- String? parentTable,
Implementation
OpResult? addOperation(OperationType operationType, dynamic parent,
String? columnName, dynamic children,
[String? parentTable]) {
dynamic localParent;
String localTable;
dynamic localChildren;
String? localWhereClause;
if (parent is Map) {
localParent = parent['objectId'];
localTable = parentTable!;
} else if (parent is String) {
localParent = parent;
localTable = parentTable!;
} else if (parent is OpResult) {
localParent = parent.resolveTo(propName: 'objectId').makeReference();
localTable = parent.tableName;
} else if (parent is OpResultValueReference) {
localParent =
TransactionHelper.convertCreateBulkOrFindResultIndexToObjectId(
parent);
localTable = parent.opResult.tableName;
} else if (reflector.canReflect(parent)) {
localParent = parent.objectId;
localTable = reflector.getServerName(parent.runtimeType)!;
} else {
throw ArgumentError(
"The value should be either Custom class object, Map, Id, OpResult or OpResultValueReference");
}
if (children is List) {
localWhereClause = null;
if (children[0] is String) {
localChildren = children;
} else if (children[0] is Map) {
localChildren = children.map((e) => e['objectId']).toList();
} else if (reflector.canReflect(children[0])) {
localChildren = children.map((e) => e.objectId).toList();
} else {
throw ArgumentError(
'The children argument should be the list of IDs, Maps or Custom class objects');
}
} else if (children is OpResult) {
localChildren = children.makeReference();
localWhereClause = null;
} else if (children is String) {
localChildren = null;
localWhereClause = children;
} else {
throw ArgumentError(
'The children argument should be either List, OpResult or whereClause');
}
return _addOperation(operationType, localTable, localParent, columnName,
localWhereClause, localChildren);
}