save method
Persists the model using the active resolver and returns the stored copy.
Implementation
Future<TModel> save({bool returning = true, bool touch = true}) async {
final def = expectDefinition();
final resolver = _resolveResolverFor(def);
final repository = _repositoryFor(def, resolver);
final pkValue = _primaryKeyValue(def);
List<TModel> persisted;
final shouldTouchOwners = touch && _shouldTouchOwners(requireDirty: true);
if (def.primaryKeyField == null || pkValue == null) {
persisted = await repository.insertMany(<TModel>[_self()]);
} else {
persisted = await repository.upsertMany(<TModel>[_self()]);
}
final result = persisted.isNotEmpty ? persisted.first : _self();
_syncFrom(result, def, resolver);
if (shouldTouchOwners) {
await touchOwners();
}
return result;
}