getTableFieldsTypesImpl method

  1. @override
Future<Map<String, Type>?> getTableFieldsTypesImpl(
  1. String table
)
override

Implementation

@override
Future<Map<String, Type>?> getTableFieldsTypesImpl(String table) async {
  var connection = await catchFromPool();

  try {
    _log.info('getTableFieldsTypesImpl> $table');

    var sql = "SHOW COLUMNS FROM `$table`";
    var results = await connection.query(sql);

    var scheme = results.toList();

    await releaseIntoPool(connection);

    if (scheme.isEmpty) return null;

    var fieldsTypes = Map<String, Type>.fromEntries(scheme.map((e) {
      var k = e['Field'] as String;
      var v = _toFieldType(e['Type'].toString());
      return MapEntry(k, v);
    }));

    return fieldsTypes;
  } catch (e) {
    await disposePoolElement(connection);
    rethrow;
  }
}