search method
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;
}