write method
Store session data
Implementation
@override
Future<void> write(String sessionId, Map<String, dynamic> data) async {
if (!_isConnected) {
throw StateError('Redis connection not available');
}
final key = 'session:$sessionId';
final jsonData = data.toString(); // Convert to JSON-like string
// Store with TTL based on last activity
final lastActivityStr = data['last_activity'] as String?;
if (lastActivityStr != null) {
try {
final lastActivity = DateTime.parse(lastActivityStr);
const ttl = Duration(hours: 24); // Default 24 hours
final expiry = lastActivity.add(ttl);
final ttlSeconds = expiry.difference(DateTime.now()).inSeconds;
if (ttlSeconds > 0) {
await _command.send_object(['SETEX', key, ttlSeconds, jsonData]);
return;
}
} catch (e) {
// Fall back to regular SET
}
}
await _command.send_object(['SET', key, jsonData]);
}