query method

Future<List> query(
  1. Map<String, String> parameters
)

Implementation

Future<List> query(Map<String, String> parameters) async {
  String? clear;
  String? where;
  String? order;
  if (parameters.containsKey("clear")) clear = parameters["clear"];
  if (parameters.containsKey("where")) where = parameters["where"];
  if (parameters.containsKey("orderby")) order = parameters["orderby"];

  if (clear == "true") this.clear();
  logs = await hive_log.Log.query(where: where, orderby: order);

  final List<Map<dynamic, dynamic>> list = [];
  for (var entry in logs!) {
    Map<String, String?> map = <String, String?>{};
    map['type'] = entry['type'];
    map['time'] = DateTime.fromMillisecondsSinceEpoch(entry['epoch'])
        .toIso8601String()
        .replaceAll("T", " ");
    map['routine'] = entry['routine'];
    map['message'] = entry['message'].replaceAll('\n', ' ');

    bool ok = true;

    if (ok) ok = _filter(parameters['type'], map['type']);
    if (ok) ok = _filter(parameters['key'], map['key']);
    if (ok) ok = _filter(parameters['message'], map['message']);
    if (ok) ok = _filter(parameters['function'], map['function']);

    if (ok) list.add(map);
  }
  list.sort((a, b) => b['time'].compareTo(a['time']));
  return list;
}