<?php

/**
 * @file
 * Install, update and uninstall functions for the entity_test module.
 */

use Drupal\system\Tests\Update\DbUpdatesTrait;
use Drupal\field\Entity\FieldStorageConfig;
use Drupal\field\Entity\FieldConfig;

/**
 * Implements hook_install().
 */
function entity_test_install() {
  foreach (entity_test_entity_types() as $entity_type) {
    // Auto-create fields for testing.
    FieldStorageConfig::create([
      'entity_type' => $entity_type,
      'field_name' => 'field_test_text',
      'type' => 'text',
      'cardinality' => 1,
    ])->save();
    FieldConfig::create([
      'entity_type' => $entity_type,
      'field_name' => 'field_test_text',
      'bundle' => $entity_type,
      'label' => 'Test text-field',
      'translatable' => FALSE,
    ])->save();

    entity_get_form_display($entity_type, $entity_type, 'default')
      ->setComponent('field_test_text', ['type' => 'text_textfield'])
      ->save();
  }
}

/**
 * Implements hook_schema().
 */
function entity_test_schema() {
  // Schema for simple entity.
  $schema['entity_test_example'] = [
    'description' => 'Stores entity_test items.',
    'fields' => [
      'id' => [
        'type' => 'serial',
        'not null' => TRUE,
        'description' => 'Primary Key: Unique entity-test item ID.',
      ],
    ],
    'primary key' => ['id'],
  ];
  return $schema;
}

DbUpdatesTrait::includeUpdates('entity_test', 'entity_definition_updates');
DbUpdatesTrait::includeUpdates('entity_test', 'status_report');
