readOldestEventsExcludingIds method
Implementation
Future<List<EventRow>> readOldestEventsExcludingIds(
int limit,
Set<int> excludedIds,
) async {
if (excludedIds.isEmpty) {
return readOldestEvents(limit);
}
if (_db == null || !_isOpen) return [];
try {
final placeholders = excludedIds.map((_) => '?').join(',');
final List<Map<String, dynamic>> maps = await _db!.rawQuery(
'''
SELECT * FROM $_tableName
WHERE id NOT IN ($placeholders)
ORDER BY
CASE event_name
WHEN 'first_open' THEN 0
WHEN 'session_start' THEN 1
WHEN 'ad_impression' THEN 2
ELSE 3
END,
ts_millis ASC
LIMIT ?
''',
[...excludedIds, limit],
);
return maps.map((m) => EventRow.fromMap(m)).toList();
} catch (e, st) {
dbLogger.severe(
'SqliteEventStorage: readOldestEventsExcludingIds failed',
e,
st,
);
await _handlePotentialCorruption(e);
return [];
}
}