3 namespace Application\Migrations
;
5 use Doctrine\DBAL\Migrations\AbstractMigration
;
6 use Doctrine\DBAL\Schema\Schema
;
7 use Symfony\Component\DependencyInjection\ContainerAwareInterface
;
8 use Symfony\Component\DependencyInjection\ContainerInterface
;
11 * Added user_id column on oauth2_clients to prevent users to delete API clients from other users
13 class Version20161024212538
extends AbstractMigration
implements ContainerAwareInterface
16 * @var ContainerInterface
20 private $constraintName = 'IDX_user_oauth_client';
22 public function setContainer(ContainerInterface
$container = null)
24 $this->container
= $container;
27 private function getTable($tableName)
29 return $this->container
->getParameter('database_table_prefix').$tableName;
33 * @param Schema $schema
35 public function up(Schema
$schema)
37 $clientsTable = $schema->getTable($this->getTable('oauth2_clients'));
39 $this->skipIf($clientsTable->hasColumn('user_id'), 'It seems that you already played this migration.');
41 $clientsTable->addColumn('user_id', 'integer', ['notnull' => false]);
43 $clientsTable->addForeignKeyConstraint(
44 $this->getTable('user'),
47 ['onDelete' => 'CASCADE'],
53 * @param Schema $schema
55 public function down(Schema
$schema)
57 $clientsTable = $schema->getTable($this->getTable('oauth2_clients'));
59 $this->skipIf(!$clientsTable->hasColumn('user_id'), 'It seems that you already played this migration.');
61 $clientsTable->dropColumn('user_id', 'integer');
63 if ($this->connection
->getDatabasePlatform()->getName() != 'sqlite') {
64 $clientsTable->removeForeignKey($this->constraintName
);