Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 2 |
CRAP | |
0.00% |
0 / 104 |
| TermStorageSchema | |
0.00% |
0 / 1 |
|
0.00% |
0 / 2 |
30 | |
0.00% |
0 / 104 |
| getEntitySchema | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 88 |
|||
| getSharedTableFieldSchema | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 16 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\taxonomy\TermStorageSchema. | |
| */ | |
| namespace Drupal\taxonomy; | |
| use Drupal\Core\Entity\ContentEntityTypeInterface; | |
| use Drupal\Core\Entity\Sql\SqlContentEntityStorageSchema; | |
| use Drupal\Core\Field\FieldStorageDefinitionInterface; | |
| /** | |
| * Defines the term schema handler. | |
| */ | |
| class TermStorageSchema extends SqlContentEntityStorageSchema { | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| protected function getEntitySchema(ContentEntityTypeInterface $entity_type, $reset = FALSE) { | |
| $schema = parent::getEntitySchema($entity_type, $reset = FALSE); | |
| $schema['taxonomy_term_field_data']['indexes'] += array( | |
| 'taxonomy_term__tree' => array('vid', 'weight', 'name'), | |
| 'taxonomy_term__vid_name' => array('vid', 'name'), | |
| ); | |
| $schema['taxonomy_term_hierarchy'] = array( | |
| 'description' => 'Stores the hierarchical relationship between terms.', | |
| 'fields' => array( | |
| 'tid' => array( | |
| 'type' => 'int', | |
| 'unsigned' => TRUE, | |
| 'not null' => TRUE, | |
| 'default' => 0, | |
| 'description' => 'Primary Key: The {taxonomy_term_data}.tid of the term.', | |
| ), | |
| 'parent' => array( | |
| 'type' => 'int', | |
| 'unsigned' => TRUE, | |
| 'not null' => TRUE, | |
| 'default' => 0, | |
| 'description' => "Primary Key: The {taxonomy_term_data}.tid of the term's parent. 0 indicates no parent.", | |
| ), | |
| ), | |
| 'indexes' => array( | |
| 'parent' => array('parent'), | |
| ), | |
| 'foreign keys' => array( | |
| 'taxonomy_term_data' => array( | |
| 'table' => 'taxonomy_term_data', | |
| 'columns' => array('tid' => 'tid'), | |
| ), | |
| ), | |
| 'primary key' => array('tid', 'parent'), | |
| ); | |
| $schema['taxonomy_index'] = array( | |
| 'description' => 'Maintains denormalized information about node/term relationships.', | |
| 'fields' => array( | |
| 'nid' => array( | |
| 'description' => 'The {node}.nid this record tracks.', | |
| 'type' => 'int', | |
| 'unsigned' => TRUE, | |
| 'not null' => TRUE, | |
| 'default' => 0, | |
| ), | |
| 'tid' => array( | |
| 'description' => 'The term ID.', | |
| 'type' => 'int', | |
| 'unsigned' => TRUE, | |
| 'not null' => TRUE, | |
| 'default' => 0, | |
| ), | |
| 'status' => array( | |
| 'description' => 'Boolean indicating whether the node is published (visible to non-administrators).', | |
| 'type' => 'int', | |
| 'not null' => TRUE, | |
| 'default' => 1, | |
| ), | |
| 'sticky' => array( | |
| 'description' => 'Boolean indicating whether the node is sticky.', | |
| 'type' => 'int', | |
| 'not null' => FALSE, | |
| 'default' => 0, | |
| 'size' => 'tiny', | |
| ), | |
| 'created' => array( | |
| 'description' => 'The Unix timestamp when the node was created.', | |
| 'type' => 'int', | |
| 'not null' => TRUE, | |
| 'default'=> 0, | |
| ), | |
| ), | |
| 'primary key' => array('nid', 'tid'), | |
| 'indexes' => array( | |
| 'term_node' => array('tid', 'status', 'sticky', 'created'), | |
| ), | |
| 'foreign keys' => array( | |
| 'tracked_node' => array( | |
| 'table' => 'node', | |
| 'columns' => array('nid' => 'nid'), | |
| ), | |
| 'term' => array( | |
| 'table' => 'taxonomy_term_data', | |
| 'columns' => array('tid' => 'tid'), | |
| ), | |
| ), | |
| ); | |
| return $schema; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| protected function getSharedTableFieldSchema(FieldStorageDefinitionInterface $storage_definition, $table_name, array $column_mapping) { | |
| $schema = parent::getSharedTableFieldSchema($storage_definition, $table_name, $column_mapping); | |
| $field_name = $storage_definition->getName(); | |
| if ($table_name == 'taxonomy_term_field_data') { | |
| // Remove unneeded indexes. | |
| unset($schema['indexes']['taxonomy_term_field__vid__target_id']); | |
| unset($schema['indexes']['taxonomy_term_field__description__format']); | |
| switch ($field_name) { | |
| case 'weight': | |
| // Improves the performance of the taxonomy_term__tree index defined | |
| // in getEntitySchema(). | |
| $schema['fields'][$field_name]['not null'] = TRUE; | |
| break; | |
| case 'name': | |
| $this->addSharedTableFieldIndex($storage_definition, $schema, TRUE); | |
| break; | |
| } | |
| } | |
| return $schema; | |
| } | |
| } |