updateServerGeneratedIds method

Future<void> updateServerGeneratedIds({
  1. required UpdateServerGeneratedIdModel model,
})

Implementation

Future<void> updateServerGeneratedIds({
  required UpdateServerGeneratedIdModel model,
}) async {
  final opLogs = await isar.opLogs
      .filter()
      .clientReferenceIdEqualTo(model.clientReferenceId)
      .findAll();

  for (final oplog in opLogs
      .where(
        (element) => element.entityType.name != DataModelType.service.name,
      )
      .toList()) {
    final entry = OpLogEntry.fromOpLog<T>(oplog);

    OpLogEntry updatedEntry = entry.copyWith(
      serverGeneratedId: model.serverGeneratedId,
      additionalIds: model.additionalIds,
      rowVersion: model.rowVersion,
      nonRecoverableError: model.nonRecoverableError,
    );

    if (entry.syncedUp) {
      updatedEntry = updatedEntry.copyWith(
        syncedDown: true,
        syncedDownOn: DateTime.now(),
      );
    }

    final updatedOplog = updatedEntry.oplog;

    await isar.writeTxn(() async {
      await isar.opLogs.put(updatedOplog);
    });
  }

  return;
}