getPrimaryKey method

  1. @override
Future<String?> getPrimaryKey(
  1. TableName tableName
)
override

Get the primary key for a given table.

Implementation

@override
Future<String?> getPrimaryKey(TableName tableName) async {
  var queryResult = await select(getIndexSql(tableName));
  if (queryResult?.length == 0) {
    // try second way
    var queryResult = await select(getIndexSql(tableName));
    if (queryResult?.length == 0) {
      return null;
    } else {
      var queryResultRow = queryResult?.first;
      String? pkName;
      String? indexName = queryResultRow?.get("index_name").toString();
      if (indexName != null && indexName.toLowerCase().contains("pkey")) {
        String? columnDef = queryResultRow?.get("column").toString();
        pkName = columnDef?.split(RegExp(r"\s+"))[0];
      }
      return pkName;
    }
  } else {
    var row = queryResult?.first;
    if (row != null) {
      return row.getAt(0);
    }
    return null;
  }
}