getTableFieldsTypesImpl method

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

Implementation

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

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

    var sql =
        "SELECT column_name, data_type, column_default, is_updatable FROM information_schema.columns WHERE table_name = '$table'";

    var results = await connection.mappedResultsQuery(sql);

    var scheme = results.map((e) => e['']!).toList(growable: false);

    await releaseIntoPool(connection);

    if (scheme.isEmpty) return null;

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

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