You are here

function entity_usage_update_8301 in Entity Usage 8.3

Recreate the entity usage table with the new schema.

File

./entity_usage.install, line 436
Install, update and uninstall functions for entity_usage module.

Code

function entity_usage_update_8301(&$sandbox) {
  $schema = \Drupal::database()
    ->schema();
  $schema
    ->dropTable('entity_usage');

  // This is deliberately duplicated instead of calling entity_usage_schema().
  $new_spec = [
    'description' => 'Track entities that reference other entities.',
    'fields' => [
      'target_id' => [
        'description' => 'The target entity ID.',
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 0,
      ],
      'target_id_string' => [
        'description' => 'The target ID, when the entity uses string IDs.',
        'type' => 'varchar_ascii',
        'length' => 128,
        'not null' => TRUE,
        'default' => '',
      ],
      'target_type' => [
        'description' => 'The target entity type.',
        'type' => 'varchar_ascii',
        'length' => 128,
        'not null' => TRUE,
        'default' => '',
      ],
      'source_id' => [
        'description' => 'The source entity ID.',
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 0,
      ],
      'source_id_string' => [
        'description' => 'The source ID, when the entity uses string IDs.',
        'type' => 'varchar_ascii',
        'length' => 128,
        'not null' => FALSE,
      ],
      'source_type' => [
        'description' => 'The source entity type.',
        'type' => 'varchar_ascii',
        'length' => 128,
        'not null' => TRUE,
        'default' => '',
      ],
      'source_langcode' => [
        'description' => 'The source entity language code.',
        'type' => 'varchar_ascii',
        'length' => 12,
        'not null' => TRUE,
        'default' => '',
      ],
      'source_vid' => [
        'description' => 'The source entity revision ID.',
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 0,
      ],
    ],
    'primary key' => [
      'target_id',
      'target_id_string',
      'target_type',
      'source_id',
      'source_type',
      'source_langcode',
      'source_vid',
    ],
    'indexes' => [
      'target_entity' => [
        'target_type',
        'target_id',
      ],
      'target_entity_string' => [
        'target_type',
        'target_id_string',
      ],
      'source_entity' => [
        'source_type',
        'source_id',
      ],
      'source_entity_string' => [
        'source_type',
        'source_id_string',
      ],
    ],
  ];
  $schema
    ->createTable('entity_usage', $new_spec);
}