deleteSegment method

  1. @override
Future<void> deleteSegment(
  1. String collectionName,
  2. String segmentId
)
override

Implementation

@override
Future<void> deleteSegment(String collectionName, String segmentId) async {
  try {
    Collection collection = await client.getCollection(name: collectionName);//, embeddingFunction: embeddingFunction);
    await collection.delete(ids: [segmentId]);

    Map<String, dynamic> metadata = Map<String, dynamic>.from(collection.metadata!);
    List<String> segmentIdOrder = (jsonDecode(metadata[segmentIdOrderKey]) as List<dynamic>).map((segmentId)=> (segmentId as String)).toList();
    segmentIdOrder.remove(segmentId);
    metadata[segmentIdOrderKey] = jsonEncode(segmentIdOrder);
    await collection.modify(name: collectionName, metadata: metadata);
  } on ChromaApiClientException catch(e) {
    VectorDatabaseException vdbException = VectorDatabaseException(
        code: e.code??500,
        message: e.message + ": " + (e.body is String ? (e.body as String) : e.body.toString())
    );
    throw vdbException;
  }
}