diff --git a/core/modules/datetime_range/datetime_range.install b/core/modules/datetime_range/datetime_range.install new file mode 100644 index 0000000..6767526 --- /dev/null +++ b/core/modules/datetime_range/datetime_range.install @@ -0,0 +1,41 @@ +getStorage('field_storage_config') + ->loadByProperties(array('type' => 'daterange')); + + foreach ($field_storage_configs as $config) { + $entity_type = \Drupal::entityTypeManager() + ->getDefinition($config->getTargetEntityTypeId()); + $table_mapping = \Drupal::entityTypeManager() + ->getStorage($config->getTargetEntityTypeId()) + ->getTableMapping(); + + // Prepare the list of field tables to alter, taking into account if the + // entity type is revisionable. + $tables = [$table_mapping->getDedicatedDataTableName($config)]; + if ($entity_type->isRevisionable()) { + $tables[] = $table_mapping->getDedicatedRevisionTableName($config); + } + + // The 'not null' default value is FALSE, but it's set explicitly to avoid + // any confusion. + $schema = $config->getSchema(); + $schema['columns']['end_value']['not null'] = FALSE; + + $field_name = $config->getName() . '_end_value'; + foreach ($tables as $table) { + \Drupal::database()->schema() + ->changeField($table, $field_name, $field_name, $schema['columns']['end_value']); + } + } +}