From 0326ab0534dffa478c2ca74552e52a9868e0062d Mon Sep 17 00:00:00 2001
From: mkslanc <mks-tech@ya.ru>
Date: Thu, 8 Apr 2021 22:09:42 +0400
Subject: [PATCH] fixed item receiving from edge

---
 lib/MemriApp/CVU/resolving/CVULookupController.dart   | 10 ++++++----
 lib/MemriApp/Controllers/Database/ItemEdgeRecord.dart |  4 ++--
 lib/MemriApp/Controllers/Database/ItemRecord.dart     | 11 +++++++++++
 3 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/lib/MemriApp/CVU/resolving/CVULookupController.dart b/lib/MemriApp/CVU/resolving/CVULookupController.dart
index db740101..ecc4c3fb 100644
--- a/lib/MemriApp/CVU/resolving/CVULookupController.dart
+++ b/lib/MemriApp/CVU/resolving/CVULookupController.dart
@@ -514,10 +514,12 @@ class CVULookupController {
                 .toList();
             return LookupStepItems(await filter(result, subexpression, db));
           } else {
-            List<ItemRecord> result =
-                (await Future.wait(items.map((item) async => await item.edgeItem(trimmedName, db))))
-                    .whereType<ItemRecord>()
-                    .toList();
+            List<ItemRecord> result = [];
+            await Future.forEach(items, (ItemRecord item) async {
+              var itemRecord = await item.edgeItem(trimmedName, db);
+              if (itemRecord != null) result.add(itemRecord);
+            });
+
             return LookupStepItems(await filter(result, subexpression, db));
           }
         } else {
diff --git a/lib/MemriApp/Controllers/Database/ItemEdgeRecord.dart b/lib/MemriApp/Controllers/Database/ItemEdgeRecord.dart
index 6cee8173..71592b69 100644
--- a/lib/MemriApp/Controllers/Database/ItemEdgeRecord.dart
+++ b/lib/MemriApp/Controllers/Database/ItemEdgeRecord.dart
@@ -56,11 +56,11 @@ class ItemEdgeRecord {
   }
 
   Future<ItemRecord?> owningItem(DatabaseController db) async {
-    return await ItemRecord.fetchWithUID(sourceUID!, db);
+    return await ItemRecord.fetchWithRowID(sourceRowID!, db);
   }
 
   Future<ItemRecord?> targetItem(DatabaseController db) async {
-    return await ItemRecord.fetchWithUID(targetUID!, db);
+    return await ItemRecord.fetchWithRowID(targetRowID!, db);
   }
 
 /*
diff --git a/lib/MemriApp/Controllers/Database/ItemRecord.dart b/lib/MemriApp/Controllers/Database/ItemRecord.dart
index 562c78fe..a7580f18 100644
--- a/lib/MemriApp/Controllers/Database/ItemRecord.dart
+++ b/lib/MemriApp/Controllers/Database/ItemRecord.dart
@@ -145,6 +145,17 @@ class ItemRecord extends Equatable {
     }
   }
 
+  static Future<ItemRecord?> fetchWithRowID(int id, [DatabaseController? db]) async {
+    db ??= AppController.shared.databaseController;
+    try {
+      Item item = await db.databasePool.itemRecordFetchWithRowId(id);
+      return ItemRecord.fromItem(item);
+    } catch (e) {
+      print(e);
+      return null;
+    }
+  }
+
   Future<int> insert(Database db) async {
     return await db.itemRecordInsert(this);
   }
-- 
GitLab