getWaterLineList method

Future<List<WaterLineDto>> getWaterLineList(
  1. int? ts,
  2. SqlOperator? tsOperator,
  3. int? table_id,
  4. List<int>? excludeTableIdList,
  5. List<WaterState>? stateList,
  6. Set<WaterError>? errorEnumSet,
  7. SortOrderType? sortOrder,
  8. int? limit,
)

Implementation

Future<List<WaterLineDto>> getWaterLineList(
    int? ts,
    SqlOperator? tsOperator,
    int? table_id,
    List<int>? excludeTableIdList,
    List<WaterState>? stateList,
    Set<WaterError>? errorEnumSet,
    SortOrderType? sortOrder,
    int? limit) async {
  String limitSql = "";
  if (tsOperator == null) tsOperator = SqlOperator.EQUAL;
  FieldData fieldData = WaterLineDto.getSelectFieldData();
  WhereData whereData = getWaterLineWhereData(
      ts, tsOperator, table_id, excludeTableIdList, stateList, errorEnumSet);
  if (limit != null) {
    limitSql = " LIMIT " + limit.toString();
  }
  String sql;
  if (tsOperator != SqlOperator.MAX) {
    sql = sqlCommands.select(fieldData, whereData) + " ORDER BY water_ts";
    if (sortOrder == SortOrderType.PRIMARY_KEY_DESC) sql += " DESC ";
    sql += limitSql;
  } else {
    WhereGenerator whereGenerator =
        WhereGenerator(transaction.getTools()!.dbType, smd);
    sql = sqlCommands.select(fieldData, null);
    whereData.set("water_ts", SqlOperator.LESS, WaterLineDto.min_id_for_user);
    sql += " FROM $tableName "
            "    WHERE water_ts=(" +
        "              SELECT MAX(water_ts) " +
        "                FROM " +
        tableName +
        whereGenerator.getWhereString(whereData) +
        "             )";
  }
  List<WaterLineDto> list = [];
  RawTableData rawTableData;
  print(sql);
  try {
    rawTableData = await transaction.getConnection().query(sql, fieldData);
    if (rawTableData.rowCount == 0)
      throw SqlException(SqlExceptionEnum.ENTRY_NOT_FOUND,
          sql: sql, json: fieldData.toJson());
    rawTableData.getRawRows().forEach((RawRowData rawRowData) {
      list.add(WaterLineDto.field(rawRowData.getFieldData(), smd));
    });
  } on SqlException catch (e) {
    SqlExceptionEnum sen =
        (e.sqlExceptionEnum == SqlExceptionEnum.TABLE_NOT_FOUND)
            ? SqlExceptionEnum.ENTRY_NOT_FOUND
            : e.sqlExceptionEnum;
    throw SqlException(sen,
        cause: e.cause, sql: sql, json: fieldData.toJson());
  }
  return list;
}