insert method

void insert({
  1. required String id,
  2. required List<double> vector,
  3. String? content,
  4. Map<String, dynamic>? metadata,
  5. String? hash,
})

Implementation

void insert({
  required String id,
  required List<double> vector,
  String? content,
  Map<String, dynamic>? metadata,
  String? hash,
}) {
  _ensureOpen();
  _ensureVectorMatchesDimension(vector);

  final idPointer = id.toNativeUtf8();
  final contentPointer = _nullableUtf8(content);
  final metadataPointer = _nullableUtf8(
    metadata == null ? null : jsonEncode(metadata),
  );
  final hashPointer = _nullableUtf8(hash);
  final vectorPointer = _toFloatPointer(vector);

  try {
    final status = _bindings.zvecInsert(
      _handle,
      idPointer,
      vectorPointer,
      vector.length,
      contentPointer,
      metadataPointer,
      hashPointer,
    );
    _throwIfFailed(status);
  } finally {
    calloc.free(idPointer);
    _freeNullableUtf8(contentPointer);
    _freeNullableUtf8(metadataPointer);
    _freeNullableUtf8(hashPointer);
    calloc.free(vectorPointer);
  }
}