TableDropper class
Drops a set of tables.
class TableDropper { ConnectionPool pool; List<String> tables; List<String> _tables = []; /** * Create a [TableDropper]. Needs a [pool] and * a list of [tables]. */ TableDropper(this.pool, this.tables); void _dropTables(Completer c) { afterDrop() { if (_tables.length == 0) { c.complete(null); } else { _dropTables(c); } } var table = _tables.removeAt(0); pool.query('drop table $table') // if it's an unknown table, ignore the error and continue .then((_) { afterDrop(); }) .catchError((e) { afterDrop(); }, test: (e) => e is MySqlException && (e as MySqlException).errorNumber == ERROR_UNKNOWN_TABLE) .catchError((e) { c.completeError(e); }); } /** * Drops the tables this [TableDropper] was created with. The * returned [Future] completes when all the tables have been dropped. * If a table doesn't exist, it is ignored. * * Do not run this a second time until the future has completed. */ Future dropTables() { var c = new Completer(); _tables.clear(); _tables.addAll(tables); _dropTables(c); return c.future; } }
Constructors
new TableDropper(ConnectionPool pool, List<String> tables) #
Create a TableDropper. Needs a pool and a list of tables.
TableDropper(this.pool, this.tables);
Methods
Future dropTables() #
Drops the tables this TableDropper was created with. The returned Future completes when all the tables have been dropped. If a table doesn't exist, it is ignored.
Do not run this a second time until the future has completed.
Future dropTables() { var c = new Completer(); _tables.clear(); _tables.addAll(tables); _dropTables(c); return c.future; }