deleteBelowLatestTs method

Future<void> deleteBelowLatestTs(
  1. WaterState waterState
)

Implementation

Future<void> deleteBelowLatestTs(WaterState waterState) async {
  WhereData whereData = WhereData();
  whereData.set("water_error", SqlOperator.EQUAL,
      WaterErrorAccess.getWaterErrorValue(WaterError.NONE));
  whereData.set("water_state", SqlOperator.EQUAL,
      WaterStateAccess.getWaterStateValue(waterState));
  WhereGenerator wg = WhereGenerator(transaction.getTools()!.dbType, smd);
  int maxTs = 0;
  String sql = "SELECT MAX(water_ts) " +
      "             FROM " +
      tableName +
      "            WHERE water_ts < " +
      WaterLineDto.min_id_for_user.toString() +
      "              AND " +
      wg.getWhereStringNoPrefix(whereData);
  print(sql);
  try {
    RawTableData rawTableData =
        await transaction.getConnection().query(sql, FieldData.wee(table_id));
    maxTs = rawTableData.getRawRowData(0).getField(0) as int;
  } on SqlException {
    rethrow;
  }
  if (maxTs != null) {
    sql = "   DELETE " +
        "     FROM " +
        tableName +
        "    WHERE water_ts < " +
        maxTs.toString() +
        "      AND " +
        wg.getWhereStringNoPrefix(whereData);
    print(sql);
    try {
      await transaction.getConnection().query(sql, FieldData.wee(table_id));
    } on SqlException {
      rethrow;
    }
  }
}