From 39b02507a3c69a4a46f898b7cf07b32cc23ef7c2 Mon Sep 17 00:00:00 2001 From: Dave Mc Nicoll Date: Sun, 17 Nov 2024 19:27:30 -0500 Subject: [PATCH] - Fixed path entity naming --- src/Form/Storage/DatabaseMigration.php | 163 ------------------------- src/Lib/DatabaseMigrations.php | 4 +- 2 files changed, 3 insertions(+), 164 deletions(-) delete mode 100644 src/Form/Storage/DatabaseMigration.php diff --git a/src/Form/Storage/DatabaseMigration.php b/src/Form/Storage/DatabaseMigration.php deleted file mode 100644 index 6bb394c..0000000 --- a/src/Form/Storage/DatabaseMigration.php +++ /dev/null @@ -1,163 +0,0 @@ -definition ??= new Lib\Database\DefinitionCollection(); - } - - public function initialize(FormContextInterface $context) : void - { - foreach($this->migration->entities as $entity => $table) { - $previous = null; - - $connection = $entity::resolveEntity()->sqlAdapter(); - $adapter = $connection->adapter(); - $tableName = $table->tableName(); - $databaseName = $table->databaseName(); - - if ( ! $tableName || ! $databaseName ) { - continue; - } - - # Query current table's columns - $tableEntity = $adapter->schemaTable($connection, $databaseName, $tableName); - - $this->definition[$entity]['table'] = $tableDefinition = new Lib\Database\Definition( - entity: $entity, - modifier: new Lib\Database\Modifier( type: Lib\Database\ModifierTypeEnum::None, ), - ); - - if ( $tableEntity ) { - $this->definition[$entity]['columns'] = new Lib\Database\DefinitionCollection(); - - foreach($table->fieldList(EntityResolver::KEY_COLUMN_NAME, true) as $field => $definition) { - $this->definition[$entity]['columns'][$field] = $def = new Lib\Database\Definition( - entity: $entity, - field: $field, - definition: $definition, - modifier: new Lib\Database\Modifier( type: Lib\Database\ModifierTypeEnum::None, ), - previous: $def ?? null, - ); - - $column = $tableEntity->columns->filtersOne(fn($e) => strtolower($e->name) === $field); - - # Column do not exists - if ( $column === null ) { - $def->action = "add"; - - $def->modifier = new Lib\Database\Modifier( - type: Lib\Database\ModifierTypeEnum::Alter, - query: $entity::repository() - ->alterSqlQuery([ $def->toArray() ]) - ->getSqlQuery(true) - ); - } - elseif ( ! $column->matchFieldDefinition($definition) ) { - $def->action = "change"; - - $def->modifier = new Lib\Database\Modifier( - type: Lib\Database\ModifierTypeEnum::Alter, - query: $entity::repository() - ->alterSqlQuery([ $def->toArray() ]) - ->getSqlQuery(true) - ); - } - } - - # ALTER TABLE `ajustements` CHANGE `annee` `annee` INT(11) NULL; - $alter = $this->definition[$entity]['columns']->filterAlter(); - - if ( $alter->count() ) { - if ( $adapter->splitAlterQuery() ) { - $query = $alter->map(fn(Lib\Database\Definition $map) => $entity::repository() - ->alterSqlQuery([ $map->toArray() ]) - ->getSqlQuery(true)); - } - else { - $query = $entity::repository() - ->alterSqlQuery($alter->map(fn(Lib\Database\Definition $map) => $map->toArray())) - ->getSqlQuery(true); - } - - $tableDefinition->modifier = new Lib\Database\Modifier( - type: Lib\Database\ModifierTypeEnum::Alter, - query: $query, - ); - } - } - else { - $tableDefinition->modifier = new Lib\Database\Modifier( - type: Lib\Database\ModifierTypeEnum::Create, - query: $entity::repository() - ->createSqlQuery() - ->getSqlQuery(true) - ); - } - } - - $context->definition = $this->definition; - } - - public function validate(FormContextInterface $context) : bool - { - return $context->valid(); - } - - public function execute(FormContextInterface $context) : void - { - $create = $context->createAll ? explode(',', $context->createAll) : [ $context->create ]; - - foreach(array_filter($create) as $entity) { - if ($this->definition[$entity]['table']->modifier->type === Lib\Database\ModifierTypeEnum::Create) { - $entity::repository()->createTable(); - } - } - - $alter = $context->alterAll ? explode(',', $context->alterAll) : [ $context->alter ]; - - foreach(array_filter($alter) as $entity) { - if ($this->definition[$entity]['table']->modifier->type === Lib\Database\ModifierTypeEnum::Alter) { - $adapter = $entity::resolveEntity()->sqlAdapter()->adapter(); - - $def = $this->definition[$entity]['columns']->filterAlter(); - - if ( $adapter->splitAlterQuery() ) { - $def->walk(fn(Lib\Database\Definition $definition) => - $entity::repository()->alterTable([ $definition->toArray() ]) - ); - } - else { - $entity::repository()->alterTable($def->map( fn(Lib\Database\Definition $e) => $e->toArray() )); - } - } - } - - $this->initialize($context); - } - - public static function getContext(ServerRequestInterface $request, ? string $formName = null) : FormContextInterface - { - return new class($request, $formName) extends FormContext { - - public array $status = []; - - public array $actions = []; - }; - } -} diff --git a/src/Lib/DatabaseMigrations.php b/src/Lib/DatabaseMigrations.php index 4f741bc..91e10f9 100644 --- a/src/Lib/DatabaseMigrations.php +++ b/src/Lib/DatabaseMigrations.php @@ -22,7 +22,7 @@ class DatabaseMigrations foreach($this->folderList as $namespace => $folder) { foreach(static::files($folder) as $file) { $name = $file->getBasename("." . $file->getExtension()); - $subNs = substr($file->getPath(), strlen($folder)); + $subNs = str_replace('/', '\\', substr($file->getPath(), strlen($folder))); $entity = rtrim($namespace, "\\") . ( $subNs ? "\\$subNs" : "" ) . "\\{$name}"; if ( ! method_exists($entity, 'resolveEntity') ) { @@ -34,6 +34,8 @@ class DatabaseMigrations if ( $resolve->sqlAdapter()->adapter() instanceof SqlAdapterInterface) { $this->entities[$entity] = $resolve; } + else { + } } }