queueInsertBatch method

Future<void> queueInsertBatch({
  1. required String collectionName,
  2. required List<Map<String, dynamic>> items,
})

Add multiple insert operations to queue in a batch

Implementation

Future<void> queueInsertBatch({
  required String collectionName,
  required List<Map<String, dynamic>> items,
}) async {
  final operations = <SyncOperation>[];

  for (final item in items) {
    if (!_isJsonSerializable(item['data'])) {
      throw ArgumentError(
        'Data for record ${item['recordId']} is not JSON-serializable',
      );
    }

    final operation = SyncOperation()
      ..collectionName = collectionName
      ..operationType = 'insert'
      ..payload = jsonEncode(item['data'])
      ..timestamp = DateTime.now()
      ..status = 'pending'
      ..recordId = item['recordId'];

    operations.add(operation);
  }

  await _localStorage.addToSyncQueueBatch(operations);

  // Emit events for all operations
  for (final op in operations) {
    _onEvent?.call(SyncEvent(
      type: SyncEventType.operationQueued,
      collectionName: collectionName,
      recordId: op.recordId,
      metadata: {'operationType': 'insert'},
    ));
  }
}