fetchItemsByServerWrittenTimeRange method

  1. @override
Future<List<T>> fetchItemsByServerWrittenTimeRange({
  1. required DateTime to,
  2. DateTime? from,
})
override

Fetch items from the remote server within the specified server-written timestamp range.

Implementation

@override
Future<List<T>> fetchItemsByServerWrittenTimeRange({
  required DateTime to,
  DateTime? from,
}) async {
  try {
    Query<T> query =
        await _collectionWithConverter; // Start with the base collection query

    // Apply the 'to' filter always
    query = query.where(
      'server_time_synced_at',
      isLessThanOrEqualTo: to,
    );

    // Apply the 'from' filter only if it's not null
    if (from != null) {
      query = query.where(
        'server_time_synced_at',
        isGreaterThanOrEqualTo: from,
      );
    }

    final querySnapshot = await query.get();
    return querySnapshot.docs.map((doc) => doc.data()).toList();
  } catch (e) {
    if (kDebugMode) {
      _logger.e('Error fetching items by server written time range: $e');
    }
    rethrow;
  }
}