Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\comment;
|
Chris@0
|
4
|
Chris@0
|
5 use Drupal\Core\Entity\ContentEntityTypeInterface;
|
Chris@0
|
6 use Drupal\Core\Entity\Sql\SqlContentEntityStorageSchema;
|
Chris@0
|
7 use Drupal\Core\Field\FieldStorageDefinitionInterface;
|
Chris@0
|
8
|
Chris@0
|
9 /**
|
Chris@0
|
10 * Defines the comment schema handler.
|
Chris@0
|
11 */
|
Chris@0
|
12 class CommentStorageSchema extends SqlContentEntityStorageSchema {
|
Chris@0
|
13
|
Chris@0
|
14 /**
|
Chris@0
|
15 * {@inheritdoc}
|
Chris@0
|
16 */
|
Chris@0
|
17 protected function getEntitySchema(ContentEntityTypeInterface $entity_type, $reset = FALSE) {
|
Chris@0
|
18 $schema = parent::getEntitySchema($entity_type, $reset);
|
Chris@0
|
19
|
Chris@0
|
20 $schema['comment_field_data']['indexes'] += [
|
Chris@0
|
21 'comment__status_pid' => ['pid', 'status'],
|
Chris@0
|
22 'comment__num_new' => [
|
Chris@0
|
23 'entity_id',
|
Chris@0
|
24 'entity_type',
|
Chris@0
|
25 'comment_type',
|
Chris@0
|
26 'status',
|
Chris@0
|
27 'created',
|
Chris@0
|
28 'cid',
|
Chris@0
|
29 'thread',
|
Chris@0
|
30 ],
|
Chris@0
|
31 'comment__entity_langcode' => [
|
Chris@0
|
32 'entity_id',
|
Chris@0
|
33 'entity_type',
|
Chris@0
|
34 'comment_type',
|
Chris@0
|
35 'default_langcode',
|
Chris@0
|
36 ],
|
Chris@0
|
37 ];
|
Chris@0
|
38
|
Chris@0
|
39 return $schema;
|
Chris@0
|
40 }
|
Chris@0
|
41
|
Chris@0
|
42 /**
|
Chris@0
|
43 * {@inheritdoc}
|
Chris@0
|
44 */
|
Chris@0
|
45 protected function getSharedTableFieldSchema(FieldStorageDefinitionInterface $storage_definition, $table_name, array $column_mapping) {
|
Chris@0
|
46 $schema = parent::getSharedTableFieldSchema($storage_definition, $table_name, $column_mapping);
|
Chris@0
|
47 $field_name = $storage_definition->getName();
|
Chris@0
|
48
|
Chris@0
|
49 if ($table_name == 'comment_field_data') {
|
Chris@0
|
50 // Remove unneeded indexes.
|
Chris@0
|
51 unset($schema['indexes']['comment_field__pid__target_id']);
|
Chris@0
|
52 unset($schema['indexes']['comment_field__entity_id__target_id']);
|
Chris@0
|
53
|
Chris@0
|
54 switch ($field_name) {
|
Chris@0
|
55 case 'thread':
|
Chris@0
|
56 // Improves the performance of the comment__num_new index defined
|
Chris@0
|
57 // in getEntitySchema().
|
Chris@0
|
58 $schema['fields'][$field_name]['not null'] = TRUE;
|
Chris@0
|
59 break;
|
Chris@0
|
60
|
Chris@0
|
61 case 'created':
|
Chris@0
|
62 $this->addSharedTableFieldIndex($storage_definition, $schema, TRUE);
|
Chris@0
|
63 break;
|
Chris@0
|
64
|
Chris@0
|
65 case 'uid':
|
Chris@0
|
66 $this->addSharedTableFieldForeignKey($storage_definition, $schema, 'users', 'uid');
|
Chris@0
|
67 }
|
Chris@0
|
68 }
|
Chris@0
|
69
|
Chris@0
|
70 return $schema;
|
Chris@0
|
71 }
|
Chris@0
|
72
|
Chris@0
|
73 }
|