read method

  1. @override
Future<Map<String, dynamic>?> read(
  1. String sessionId
)
override

Retrieve session data

Implementation

@override
Future<Map<String, dynamic>?> read(String sessionId) async {
  final queryBuilder =
      _connection.queryBuilder<Map<String, dynamic>>(_tableName);

  final result = await queryBuilder
      .select(['payload'])
      .where('session_id', '=', sessionId)
      .first();

  if (result == null) {
    return null;
  }

  try {
    final payload = result['payload'] as String;
    // Simplified parsing - in production use proper JSON deserialization
    if (payload.startsWith('{') && payload.endsWith('}')) {
      final Map<String, dynamic> data = {};
      final pairs = payload.substring(1, payload.length - 1).split(', ');
      for (final pair in pairs) {
        final parts = pair.split(': ');
        if (parts.length == 2) {
          final key = parts[0].replaceAll("'", '').replaceAll('"', '');
          final value = parts[1].replaceAll("'", '').replaceAll('"', '');
          data[key] = value;
        }
      }
      return data;
    }
    return null;
  } catch (e) {
    return null;
  }
}