search method

Future<List<WKMessageSearchResult>> search(
  1. String keyword
)

Implementation

Future<List<WKMessageSearchResult>> search(String keyword) async {
  List<WKMessageSearchResult> list = [];
  var sql =
      "select distinct c.*, count(*) message_count, case count(*) WHEN 1 then m.client_seq else ''END client_seq, CASE count(*) WHEN 1 THEN m.searchable_word else '' end searchable_word from ${WKDBConst.tableChannel} c LEFT JOIN ${WKDBConst.tableMessage} m ON m.channel_id = c.channel_id and m.channel_type = c.channel_type WHERE m.is_deleted=0 and searchable_word LIKE ? GROUP BY c.channel_id, c.channel_type ORDER BY m.created_at DESC limit 100";
  List<Map<String, Object?>> results =
      await WKDBHelper.shared.getDB()!.rawQuery(sql, ['%$keyword%']);
  for (Map<String, Object?> data in results) {
    var channel = WKDBConst.serializeChannel(data);
    var message = WKMessageSearchResult();
    message.channel = channel;
    message.messageCount = WKDBConst.readInt(data, 'message_count');
    message.searchableWord = WKDBConst.readString(data, 'searchable_word');
    list.add(message);
  }
  return list;
}