getTableColumns method

  1. @override
Future<List<List>> getTableColumns(
  1. TableName tableName
)
override

Get the tableName columns as array of:

  • name (string),
  • type (string),
  • isPrimaryKey (int, 1 for true)
  • notnull (int).

Implementation

@override
Future<List<List>> getTableColumns(TableName tableName) async {
  var pkName = await getPrimaryKey(tableName);

  String sql = """select column_name, data_type
                  from information_schema.columns
                  where upper(table_name)=upper(?)
                  and table_Schema=?""";

  List<List<dynamic>> columnsList = [];

  var res = await select(sql, [tableName.name, tableName.getSchema()]);
  res?.forEach((QueryResultRow row) {
    String colName = row.get('column_name');
    String colType = row.get('data_type');
    int isPk = 0;
    if (pkName != null && colName == pkName) {
      isPk = 1;
    }
    // TODO check
    int? notNull; //row['notnull'];
    columnsList.add([colName, colType, isPk, notNull]);
  });
  return columnsList;
}