exportLogsToCSVAsBytes method

Future<Uint8List> exportLogsToCSVAsBytes({
  1. DateTime? startDate,
  2. DateTime? endDate,
  3. String? url,
  4. String? method,
  5. String? message,
})

Implementation

Future<Uint8List> exportLogsToCSVAsBytes({
  DateTime? startDate,
  DateTime? endDate,
  String? url,
  String? method,
  String? message,
}) async {
  final logs = await fetchLogs(
    startDate: startDate,
    endDate: endDate,
    url: url,
    method: method,
    message: message,
  );
  List<List<String>> csvData = [
    [
      "ID",
      "URL",
      "Method",
      "Headers",
      "Body",
      "Status Code",
      "Message",
      "Timestamp"
    ],
  ];

  for (var log in logs) {
    csvData.add([
      log['id'].toString(),
      log['url'] ?? '',
      log['method'] ?? '',
      log['headers'] ?? '',
      log['body'] ?? '',
      log['statusCode']?.toString() ?? '',
      log['message'] ?? '',
      log['timestamp'] ?? '',
    ]);
  }

  String csv = const ListToCsvConverter().convert(csvData);

  // Convert CSV to bytes
  return Uint8List.fromList(utf8.encode(csv));
}