Skip to content

Commit 1485131

Browse files
committed
Add schema utility for properties
Ensures mysql gets a column with a case insensitive collation for searching.
1 parent 405d66a commit 1485131

File tree

2 files changed

+13
-6
lines changed

2 files changed

+13
-6
lines changed

Neos.ContentGraph.DoctrineDbalAdapter/src/DoctrineDbalContentGraphSchemaBuilder.php

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,6 @@ public function __construct(
2525
) {
2626
}
2727

28-
/**
29-
* @param AbstractSchemaManager<AbstractPlatform> $schemaManager
30-
* @return Schema
31-
*/
3228
public function buildSchema(Connection $connection): Schema
3329
{
3430
return DbalSchemaFactory::createSchemaWithTables($connection, [
@@ -49,7 +45,7 @@ private function createNodeTable(AbstractPlatform $platform): Table
4945
DbalSchemaFactory::columnForDimensionSpacePointHash('origindimensionspacepointhash', $platform)->setNotnull(false),
5046
DbalSchemaFactory::columnForNodeTypeName('nodetypename', $platform),
5147
(new Column('name', self::type(Types::STRING)))->setLength(255)->setNotnull(false),
52-
(new Column('properties', self::type(Types::JSON)))->setNotnull(true),
48+
DbalSchemaFactory::columnForProperties('properties', $platform)->setNotnull(true),
5349
(new Column('classification', self::type(Types::BINARY)))->setLength(20)->setNotnull(true),
5450
(new Column('created', self::type(Types::DATETIME_IMMUTABLE)))->setDefault('CURRENT_TIMESTAMP')->setNotnull(true),
5551
(new Column('originalcreated', self::type(Types::DATETIME_IMMUTABLE)))->setDefault('CURRENT_TIMESTAMP')->setNotnull(true),
@@ -100,7 +96,7 @@ private function createReferenceRelationTable(AbstractPlatform $platform): Table
10096
(new Column('name', self::type(Types::STRING)))->setLength(255)->setNotnull(true),
10197
(new Column('position', self::type(Types::INTEGER)))->setNotnull(true),
10298
DbalSchemaFactory::columnForNodeAnchorPoint('nodeanchorpoint', $platform),
103-
(new Column('properties', self::type(Types::JSON)))->setNotnull(false),
99+
DbalSchemaFactory::columnForProperties('properties', $platform)->setNotnull(false),
104100
DbalSchemaFactory::columnForNodeAggregateId('destinationnodeaggregateid', $platform)->setNotnull(true)
105101
]);
106102

Neos.ContentRepository.Core/Classes/Infrastructure/DbalSchemaFactory.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,17 @@ public static function columnForWorkspaceName(string $columnName, AbstractPlatfo
151151
return $column;
152152
}
153153

154+
public static function columnForProperties(string $columnName, AbstractPlatform $platform): Column
155+
{
156+
$column = (new Column($columnName, Type::getType(Types::JSON)));
157+
158+
if ($platform instanceof AbstractMySQLPlatform) {
159+
$column = $column->setPlatformOption('collation', self::DEFAULT_MYSQL_COLLATION);
160+
}
161+
162+
return $column;
163+
}
164+
154165
public static function columnForGenericString(string $columnName, AbstractPlatform $platform): Column
155166
{
156167
$column = (new Column($columnName, Type::getType(Types::STRING)));

0 commit comments

Comments
 (0)