serializeSessions function

String serializeSessions(
  1. List<Map<String, String>> sessions
)

Serializes a list of sessions into a TTL string.

Implementation

String serializeSessions(List<Map<String, String>> sessions) {
  if (sessions.isEmpty) {
    return _prefixes;
  }

  final buffer = StringBuffer();
  buffer.write(_prefixes);

  for (final session in sessions) {
    final String start = session['start']!;
    final String end = session['end']!;
    final String type = session['type'] ?? 'bell';
    final String duration = session['silenceDuration'] ?? '1200';
    final String title = session['title'] ?? '';
    final String description = session['description'] ?? '';

    // Use timestamp as unique ID
    final String id = DateTime.parse(start).millisecondsSinceEpoch.toString();

    buffer.write('\n:session_$id a :Session;\n');
    buffer.write('    :start "$start"^^xsd:dateTime;\n');
    buffer.write('    :end "$end"^^xsd:dateTime;\n');
    buffer.write('    :type "$type";\n');
    buffer.write('    :silenceDuration $duration');
    if (title.isNotEmpty) buffer.write(';\n    :title "$title"');
    if (description.isNotEmpty) {
      buffer.write(';\n    :description "$description"');
    }
    buffer.write('.\n');
  }

  return buffer.toString();
}