postItems method
Сохранение объектов в БД В случае успеха, поля объектов будут заполнены полями объектов из БД
Implementation
Future postItems(List<NsgDataItem> itemsToPost, {bool showProgress = false}) async {
if (itemsToPost.isEmpty) return;
assert(
itemsToPost.any((i) => i.runtimeType != runtimeType),
'Попытка сохранить данные неправильного типа. Все элементы массива должны быть типа: $runtimeType',
);
var dataType = itemsToPost.first.runtimeType;
if (storageType == NsgDataStorageType.server) {
var p = NsgDataPost(dataItemType: dataType);
p.itemsToPost = itemsToPost;
var newItems = await p.postItems(loadReference: NsgDataRequest.addAllReferences(dataType));
for (var item in newItems) {
var old = itemsToPost.firstWhereOrNull((e) => e.id == item.id);
if (old != null) {
old.copyFieldValues(item);
old.state = NsgDataItemState.fill;
}
}
} else {
await NsgLocalDb.instance.postItems(itemsToPost);
}
}