/**
  * Returns the base field definitions for entity keys.
  *
  * @param \Drupal\Core\Entity\ContentEntityTypeInterface $entity_type
  *   The entity type.
  *
  * @return \Drupal\Core\Field\BaseFieldDefinition[]
  */
 protected static function entityKeysBaseFieldDefinitions(ContentEntityTypeInterface $entity_type)
 {
     $fields = [];
     if ($entity_type->hasKey('id')) {
         $fields[$entity_type->getKey('id')] = BaseFieldDefinition::create('integer')->setLabel(t('ID'))->setReadOnly(TRUE)->setSetting('unsigned', TRUE);
     }
     if ($entity_type->hasKey('uuid')) {
         $fields[$entity_type->getKey('uuid')] = BaseFieldDefinition::create('uuid')->setLabel(t('UUID'))->setReadOnly(TRUE);
     }
     if ($entity_type->hasKey('revision')) {
         $fields[$entity_type->getKey('revision')] = BaseFieldDefinition::create('integer')->setLabel(t('Revision ID'))->setReadOnly(TRUE)->setSetting('unsigned', TRUE);
     }
     if ($entity_type->hasKey('langcode')) {
         $fields[$entity_type->getKey('langcode')] = BaseFieldDefinition::create('language')->setLabel(t('Language'))->setTranslatable(TRUE)->setRevisionable(TRUE)->setDisplayOptions('view', ['type' => 'hidden'])->setDisplayOptions('form', ['type' => 'language_select', 'weight' => 2]);
     }
     $bundle_entity_type_id = $entity_type->getBundleEntityType();
     if ($bundle_entity_type_id && $entity_type->hasKey('bundle')) {
         $fields[$entity_type->getKey('bundle')] = BaseFieldDefinition::create('entity_reference')->setLabel(t('Type'))->setSetting('target_type', $bundle_entity_type_id)->setReadOnly(TRUE);
     }
     return $fields;
 }
 /**
  * Initializes common information for a data table.
  *
  * @return array
  *   A partial schema array for the data table.
  */
 protected function initializeDataTable()
 {
     $entity_type_id = $this->entityType->id();
     $id_key = $this->entityType->getKey('id');
     $schema = array('description' => "The data table for {$entity_type_id} entities.", 'primary key' => array($id_key, 'langcode'), 'indexes' => array(), 'foreign keys' => array($entity_type_id => array('table' => $this->storage->getBaseTable(), 'columns' => array($id_key => $id_key))));
     if ($this->entityType->hasKey('revision')) {
         $key = $this->entityType->getKey('revision');
         $schema['indexes'][$this->getEntityIndexName($key)] = array($key);
     }
     $this->addTableDefaults($schema);
     return $schema;
 }