mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2025-06-21 09:35:49 +02:00
Reset autoincrements on SQLite with our ResetAutoIncrementPurger too and make it default for fixtures load
This commit is contained in:
parent
fe1715259a
commit
4977f6c270
3 changed files with 20 additions and 4 deletions
2
.github/workflows/tests.yml
vendored
2
.github/workflows/tests.yml
vendored
|
@ -109,7 +109,7 @@ jobs:
|
||||||
run: php bin/console --env test doctrine:migrations:migrate -n
|
run: php bin/console --env test doctrine:migrations:migrate -n
|
||||||
|
|
||||||
- name: Load fixtures
|
- name: Load fixtures
|
||||||
run: php bin/console --env test doctrine:fixtures:load -n --purger reset_autoincrement_purger
|
run: php bin/console --env test doctrine:fixtures:load -n
|
||||||
|
|
||||||
- name: Run PHPunit and generate coverage
|
- name: Run PHPunit and generate coverage
|
||||||
run: ./bin/phpunit --coverage-clover=coverage.xml
|
run: ./bin/phpunit --coverage-clover=coverage.xml
|
||||||
|
|
|
@ -259,7 +259,16 @@ services:
|
||||||
tags:
|
tags:
|
||||||
- { name: 'doctrine.fixtures.purger_factory', alias: 'reset_autoincrement_purger' }
|
- { name: 'doctrine.fixtures.purger_factory', alias: 'reset_autoincrement_purger' }
|
||||||
|
|
||||||
# We are needing this service inside of a migration, where only the container is injected. So we need to define it as public, to access it from the container.
|
# Decorate the doctrine fixtures load command to use our custom purger by default
|
||||||
|
doctrine.fixtures_load_command.custom:
|
||||||
|
decorates: doctrine.fixtures_load_command
|
||||||
|
class: Doctrine\Bundle\FixturesBundle\Command\LoadDataFixturesDoctrineCommand
|
||||||
|
arguments:
|
||||||
|
- '@doctrine.fixtures.loader'
|
||||||
|
- '@doctrine'
|
||||||
|
- { default: '@App\Doctrine\Purger\ResetAutoIncrementPurgerFactory' }
|
||||||
|
|
||||||
|
# We are needing this service inside a migration, where only the container is injected. So we need to define it as public, to access it from the container.
|
||||||
App\Services\UserSystem\PermissionPresetsHelper:
|
App\Services\UserSystem\PermissionPresetsHelper:
|
||||||
public: true
|
public: true
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,7 @@ use Doctrine\Common\DataFixtures\Purger\PurgerInterface;
|
||||||
use Doctrine\Common\DataFixtures\Sorter\TopologicalSorter;
|
use Doctrine\Common\DataFixtures\Sorter\TopologicalSorter;
|
||||||
use Doctrine\DBAL\Platforms\AbstractMySQLPlatform;
|
use Doctrine\DBAL\Platforms\AbstractMySQLPlatform;
|
||||||
use Doctrine\DBAL\Platforms\AbstractPlatform;
|
use Doctrine\DBAL\Platforms\AbstractPlatform;
|
||||||
|
use Doctrine\DBAL\Platforms\SqlitePlatform;
|
||||||
use Doctrine\DBAL\Schema\Identifier;
|
use Doctrine\DBAL\Schema\Identifier;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Doctrine\ORM\Mapping\ClassMetadata;
|
use Doctrine\ORM\Mapping\ClassMetadata;
|
||||||
|
@ -188,7 +189,7 @@ class ResetAutoIncrementORMPurger implements PurgerInterface, ORMPurgerInterface
|
||||||
}
|
}
|
||||||
|
|
||||||
//Reseting autoincrement is only supported on MySQL platforms
|
//Reseting autoincrement is only supported on MySQL platforms
|
||||||
if ($platform instanceof AbstractMySQLPlatform) {
|
if ($platform instanceof AbstractMySQLPlatform || $platform instanceof SqlitePlatform) {
|
||||||
$connection->beginTransaction();
|
$connection->beginTransaction();
|
||||||
$connection->executeQuery($this->getResetAutoIncrementSQL($tbl, $platform));
|
$connection->executeQuery($this->getResetAutoIncrementSQL($tbl, $platform));
|
||||||
}
|
}
|
||||||
|
@ -204,9 +205,15 @@ class ResetAutoIncrementORMPurger implements PurgerInterface, ORMPurgerInterface
|
||||||
{
|
{
|
||||||
$tableIdentifier = new Identifier($tableName);
|
$tableIdentifier = new Identifier($tableName);
|
||||||
|
|
||||||
|
if ($platform instanceof AbstractMySQLPlatform) {
|
||||||
return 'ALTER TABLE '.$tableIdentifier->getQuotedName($platform).' AUTO_INCREMENT = 1;';
|
return 'ALTER TABLE '.$tableIdentifier->getQuotedName($platform).' AUTO_INCREMENT = 1;';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($platform instanceof SqlitePlatform) {
|
||||||
|
return 'DELETE FROM `sqlite_sequence` WHERE name = \''.$tableIdentifier->getQuotedName($platform).'\';';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param ClassMetadata[] $classes
|
* @param ClassMetadata[] $classes
|
||||||
*
|
*
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue