upsert method

Future<void> upsert({
  1. required String id,
  2. required List<double> vector,
  3. Map<String, dynamic>? payload,
})

Upsert one point. payload may be omitted (null) or any JSON-encodable Map.

Implementation

Future<void> upsert({
  required String id,
  required List<double> vector,
  Map<String, dynamic>? payload,
}) async {
  _checkOpen();
  final idPtr = id.toNativeUtf8();
  final vecPtr = _allocFloatVec(vector);
  final payloadPtr =
      payload == null ? nullptr : jsonEncode(payload).toNativeUtf8();
  final errorOut = calloc<Pointer<Utf8>>();
  try {
    final rc = _b.qe_shard_upsert(
      _shard,
      idPtr.cast(),
      vecPtr,
      vector.length,
      (payloadPtr == nullptr ? nullptr : payloadPtr.cast()),
      errorOut.cast(),
    );
    if (rc != 0) {
      throw QdrantException(
          _consumeString(_b, errorOut) ?? 'qe_shard_upsert rc=$rc');
    }
  } finally {
    malloc.free(idPtr);
    malloc.free(vecPtr);
    if (payloadPtr != nullptr) malloc.free(payloadPtr);
    calloc.free(errorOut);
  }
}