revert method

  1. @override
Future<DeletedRowsStruct> revert()
override

Implementation

@override
Future<DeletedRowsStruct> revert() async {
  if (!initialized) throw ArgumentError(AbstractDao.C_MUST_INIT);
  DeletedRowsStruct struct = DeletedRowsStruct(trDto.ts);
  switch (trDto.operation) {
    case OperationType.INSERT:
      await delete(null);
      await deleteTrRowByTs(struct.ts!);
      break;
    case OperationType.UPDATE:
      await delete(null);
      await deleteTrRowByTs(struct.ts!);
      RawTableData snapShotRtd = await tableTransactionTrDao.getTrList(
          null,
          OperationType.SNAPSHOT,
          0,
          trDto.user_ts,
          null,
          null,
          null,
          null,
          null);
      RawRowData snapShotRd = snapShotRtd.getRawRowData(0);
      FieldData snapShotFd =
          TransactionTools.removeTrFieldData(snapShotRd.getFieldData());
      await tableTransactionDao.upsert(snapShotFd, WhereData());
      struct.snapshotTs = snapShotRd.get("ts", null) as int;
      await tableTransactionTrDao.deleteByTs(struct.snapshotTs);
      break;
    case OperationType.DELETE:
      await tableTransactionDao.upsert(trDto, WhereData());
      await deleteTrRowByTs(struct.ts!);
      break;
    case OperationType.SNAPSHOT:
      break;
  }
  return struct;
}