getValuesSearch method

Iterable<DataString> getValuesSearch({
  1. String searchPattern = '',
  2. int limit = 0,
  3. int offset = 0,
  4. DatabaseTableDictOrderType order = DatabaseTableDictOrderType.unorderer,
  5. bool orderAsc = true,
  6. bool highlights = false,
})

Search values

Implementation

Iterable<DataString> getValuesSearch({
  String searchPattern = '',
  int limit = 0,
  int offset = 0,
  DatabaseTableDictOrderType order = DatabaseTableDictOrderType.unorderer,
  bool orderAsc = true,
  bool highlights = false,
}) {
  final sb = StringBuffer();
  final binds = [];
  if (searchPattern.isNotEmpty) {
    sb.write('WHERE $nameFts = ?');
    binds.add(searchPattern);
    if (order != DatabaseTableDictOrderType.unorderer) {
      sb.write(' ORDER BY ');
      switch (order) {
        case DatabaseTableDictOrderType.unorderer:
          break;
        case DatabaseTableDictOrderType.id:
          sb.write('$nameFts.ROWID');
          break;
        case DatabaseTableDictOrderType.value:
          sb.write('$nameFts.${columnValue.name}');
          break;
        case DatabaseTableDictOrderType.bm25:
          sb.write('bm25($nameFts)');
          break;
      }
      if (orderAsc) {
        sb.write(' ASC');
      } else {
        sb.write(' DESC');
      }
    }
  } else {
    if (order != DatabaseTableDictOrderType.unorderer &&
        order != DatabaseTableDictOrderType.bm25) {
      sb.write(' ORDER BY ');
      switch (order) {
        case DatabaseTableDictOrderType.id:
          sb.write('ROWID');
          break;
        case DatabaseTableDictOrderType.value:
          sb.write(columnValue.name);
          break;
        case DatabaseTableDictOrderType.unorderer:
        case DatabaseTableDictOrderType.bm25:
          break;
      }
      if (orderAsc) {
        sb.write(' ASC');
      } else {
        sb.write(' DESC');
      }
    }
  }
  if (limit > 0) {
    sb.write(' LIMIT ?, ?');
    binds
      ..add(limit)
      ..add(offset);
  }
  if (searchPattern.isNotEmpty) {
    if (highlights) {
      return sqlSelectFtsHl(sb.toString(), binds);
    }
    return sqlSelectFts(sb.toString(), binds);
  }
  return sqlSelect(sb.toString(), binds);
}