getUnsyncedItems method

  1. @override
Future<List<T>> getUnsyncedItems({
  1. int? limit,
})
override

Retrieves a list of unsynced items from the local database, optionally limiting the number of items to limit.

Implementation

@override
Future<List<T>> getUnsyncedItems({int? limit}) async {
  _logger.d('[SqliteLocalRepository] Fetching unsynced items');

  // First, let's get all items and log them
  final allMaps = await (database).query(tableName);
  _logger.d(
      '[SqliteLocalRepository] Total items in database: ${allMaps.length}');
  for (final map in allMaps) {
    _logger.d(
        '[SqliteLocalRepository] Item: id=${map['id']}, updatedAt=${map['updated_at']}, serverTimeSyncedAt=${map['server_time_synced_at']}, deletedAt=${map['deleted_at']}');
  }

  // Now, let's get the unsynced items
  final maps = await (database).query(
    tableName,
    where:
        'server_time_synced_at IS NULL OR server_time_synced_at < updated_at',
    limit: limit,
    orderBy: 'updated_at',
  );
  _logger.d(
      '[SqliteLocalRepository] Found ${maps.length} potentially unsynced items');

  for (final map in maps) {
    _logger.d(
        '[SqliteLocalRepository] Unsynced item: id=${map['id']}, updatedAt=${map['updated_at']}, serverTimeSyncedAt=${map['server_time_synced_at']}, deletedAt=${map['deleted_at']}');
  }

  return maps.map(fromJson).toList();
}