Skip to content

Commit

Permalink
Implement deleteIndexes (#58)
Browse files Browse the repository at this point in the history
  • Loading branch information
Rudiksz committed Aug 7, 2020
1 parent d03f2c3 commit 40b8d25
Show file tree
Hide file tree
Showing 4 changed files with 82 additions and 8 deletions.
Expand Up @@ -235,6 +235,44 @@ public void run() {
});


} else {
result.error("errArg", "invalid arguments", null);
}

break;
case ("deleteIndex"):
if (database == null) {
result.error("errDatabase", "Database with name " + dbname + "not found", null);
return;
}

if (call.hasArgument("forName")) {
final String indexName = call.argument("forName");

final Database db = database;
AsyncTask.THREAD_POOL_EXECUTOR.execute(new Runnable() {
@Override
public void run() {
try {
db.deleteIndex(indexName);
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
result.success(true);
}
});
} catch (final CouchbaseLiteException e) {
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
result.error("errIndex", "Error deleting index", e.toString());
}
});
}
}
});


} else {
result.error("errArg", "invalid arguments", null);
}
Expand Down Expand Up @@ -418,7 +456,7 @@ public void run() {
result.success(null);
}


break;

case ("removeChangeListener"):
Expand Down
27 changes: 25 additions & 2 deletions ios/Classes/SwiftCouchbaseLitePlugin.swift
Expand Up @@ -125,8 +125,31 @@ public class SwiftCouchbaseLitePlugin: NSObject, FlutterPlugin, CBManagerDelegat
}
}
}



case "deleteIndex":
guard let database = mCBManager.getDatabase(name: dbname) else {
result(FlutterError.init(code: "errDatabase", message: "Database with name \(dbname) not found", details: nil))
return
}
guard let indexName = arguments["forName"] as? String else {
result(FlutterError.init(code: "errArgs", message: "Error: Invalid Arguments", details: call.arguments.debugDescription))
return
}

databaseDispatchQueue.async {
do {
try database.deleteIndex(forName: indexName);
DispatchQueue.main.async {
result(true)
}
} catch {
DispatchQueue.main.async {
result(FlutterError.init(code: "errIndex", message: "Error deleting index \(indexName)", details: error.localizedDescription))
}
}
}


case "deleteDatabaseWithName":
do {
try mCBManager.deleteDatabaseWithName(name: dbname)
Expand Down
12 changes: 7 additions & 5 deletions lib/src/database.dart
Expand Up @@ -134,13 +134,15 @@ class Database {
});
}

/// Deletes index [withName] from the database.
/*Future<void> deleteIndex({@required String withName}) async {
await _methodChannel.invokeMethod(
'deleteDocumentWithId', <String, dynamic>{'database': name, 'id': id});
/// Deletes index [forName] from the database.
Future<void> deleteIndex({@required String forName}) async {
await _methodChannel.invokeMethod('deleteIndex', <String, dynamic>{
'database': name,
'forName': forName,
});

return true;
}*/
}

/// Adds a database change listener on which changes will be posted
///
Expand Down
11 changes: 11 additions & 0 deletions test/couchbase_lite_test.dart
Expand Up @@ -102,6 +102,16 @@ void main() {
details: arguments.toString());
}
break;
case ("deleteIndex"):
if (arguments.containsKey("forName")) {
return true;
} else {
return PlatformException(
code: "errArgs",
message: "Query Error: Invalid Arguments",
details: arguments.toString());
}
break;
case ("addDocumentChangeListener"):
return null;
break;
Expand Down Expand Up @@ -220,6 +230,7 @@ void main() {

expect(index.toJson(), expected);
await database.createIndex(index, withName: "MyIndex");
await database.deleteIndex(forName: "MyIndex");

await database.indexes;
await database.compact();
Expand Down

0 comments on commit 40b8d25

Please sign in to comment.