getPendingUpSync method
Future<List<OpLogEntry<SideEffectModel> > >
getPendingUpSync(
- DataModelType type, {
- required String createdBy,
inherited
Implementation
Future<List<OpLogEntry<T>>> getPendingUpSync(
DataModelType type, {
required String createdBy,
}) async {
final createOpLogs = isar.opLogs
.filter()
.entityTypeEqualTo(type)
.operationEqualTo(DataOperation.create)
.serverGeneratedIdIsNull()
.syncedUpEqualTo(false)
.syncedDownEqualTo(false)
.createdByEqualTo(createdBy)
.findAllSync();
final singleCreateOpLogs = isar.opLogs
.filter()
.entityTypeEqualTo(type)
.operationEqualTo(DataOperation.singleCreate)
.serverGeneratedIdIsNull()
.syncedUpEqualTo(false)
.syncedDownEqualTo(false)
.createdByEqualTo(createdBy)
.findAllSync();
final updateOpLogs = isar.opLogs
.filter()
.entityTypeEqualTo(type)
.operationEqualTo(DataOperation.update)
.serverGeneratedIdIsNotNull()
.nonRecoverableErrorEqualTo(false)
.syncedUpEqualTo(false)
.syncedDownEqualTo(false)
.createdByEqualTo(createdBy)
.findAllSync();
final errorOpLogs = isar.opLogs
.filter()
.entityTypeEqualTo(type)
.syncedDownEqualTo(false)
.nonRecoverableErrorEqualTo(true)
.createdByEqualTo(createdBy)
.findAllSync();
final deleteOpLogs = isar.opLogs
.filter()
.entityTypeEqualTo(type)
.operationEqualTo(DataOperation.delete)
.serverGeneratedIdIsNotNull()
.syncedUpEqualTo(false)
.syncedDownEqualTo(false)
.createdByEqualTo(createdBy)
.findAllSync();
final nonRecoverableOpLogs = isar.opLogs
.filter()
.entityTypeEqualTo(type)
.syncedUpEqualTo(true)
.syncedDownEqualTo(false)
.nonRecoverableErrorEqualTo(false)
.syncDownRetryCountGreaterThan(
5 - 1,
)
.createdByEqualTo(createdBy)
.findAllSync();
var entries = [
createOpLogs,
updateOpLogs,
deleteOpLogs,
singleCreateOpLogs,
errorOpLogs,
nonRecoverableOpLogs,
].expand((element) => element);
entries = entries.sortedBy((element) => element.createdAt);
final groupedEntries = entries.groupListsBy(
(element) => element.clientReferenceId,
);
final entriesForUpSync = groupedEntries.entries
.map<OpLog?>((entry) {
if (entry.key == null) return null;
if (entry.value.isEmpty) return null;
return entry.value.first;
})
.whereNotNull()
.toList();
return entriesForUpSync.map((e) => OpLogEntry.fromOpLog<T>(e)).toList();
}