findIndexesNamesInUse method

  1. @override
FutureOr<Map<String, String?>?> findIndexesNamesInUse(
  1. String table,
  2. Iterable<String> indexesNames
)
override

Names are unique per database (an index, a table, a view...).

Implementation

@override
FutureOr<Map<String, String?>?> findIndexesNamesInUse(
  String table,
  Iterable<String> indexesNames,
) {
  var names = indexesNames.toList();
  if (names.isEmpty) return <String, String?>{};

  return executeWithPool((connection) {
    var rows = connection.select(
      'SELECT name, type, tbl_name FROM sqlite_master '
      'WHERE name IN (${names.map((_) => '?').join(', ')})',
      names,
    );

    return <String, String?>{
      for (var row in rows)
        row['name'].toString(): row['type'] == 'index'
            ? row['tbl_name']?.toString()
            : null,
    };
  });
}