readOldestEvents method

Future<List<EventRow>> readOldestEvents(
  1. int limit
)

Read oldest events, with priority events first.

Implementation

Future<List<EventRow>> readOldestEvents(int limit) async {
  if (_db == null || !_isOpen) return [];
  try {
    // Priority events first, then by ts_millis ascending
    final List<Map<String, dynamic>> maps = await _db!.rawQuery(
      '''
      SELECT * FROM $_tableName
      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 ?
    ''',
      [limit],
    );
    return maps.map((m) => EventRow.fromMap(m)).toList();
  } catch (e, st) {
    dbLogger.severe('SqliteEventStorage: readOldestEvents failed', e, st);
    await _handlePotentialCorruption(e);
    return [];
  }
}