batchUpsert method

  1. @override
Future<void> batchUpsert(
  1. List<T> items
)
override

Implementation

@override
Future<void> batchUpsert(List<T> items) async {
  final payloads = buildUpsertPayloads(items);
  for (final entry in payloads) {
    final idStr = entry.$1;
    final data = entry.$2;
    // Upsert by domain id field
    try {
      final existing = await config.client
          .collection(config.collection)
          .getFirstListItem("${config.idField}='$idStr'");
      await config.client
          .collection(config.collection)
          .update(existing.id, body: data);
    } catch (_) {
      data[config.idField] = idStr;
      await config.client.collection(config.collection).create(body: data);
    }
  }
}