getValuesSearch method
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);
}