2016-05-21 16:09:38 +00:00
< ? php
namespace Application\Migrations ;
2023-08-05 17:35:09 +00:00
use Doctrine\DBAL\Platforms\SqlitePlatform ;
2016-05-21 16:09:38 +00:00
use Doctrine\DBAL\Schema\Schema ;
2018-06-14 11:43:09 +00:00
use Wallabag\CoreBundle\Doctrine\WallabagMigration ;
2016-05-21 16:09:38 +00:00
2017-01-13 13:51:37 +00:00
/**
2017-04-13 10:57:31 +00:00
* Added name field on wallabag_oauth2_clients .
2017-01-13 13:51:37 +00:00
*/
2018-06-14 11:43:09 +00:00
class Version20160812120952 extends WallabagMigration
2016-05-21 16:09:38 +00:00
{
2022-12-14 13:36:29 +00:00
public function up ( Schema $schema ) : void
2016-05-21 16:09:38 +00:00
{
2016-11-26 15:06:14 +00:00
$clientsTable = $schema -> getTable ( $this -> getTable ( 'oauth2_clients' ));
$this -> skipIf ( $clientsTable -> hasColumn ( 'name' ), 'It seems that you already played this migration.' );
2016-11-25 16:43:28 +00:00
2023-08-05 17:35:09 +00:00
if ( $this -> connection -> getDatabasePlatform () instanceof SqlitePlatform ) {
2017-11-04 20:23:18 +00:00
// Can't use $clientsTable->addColumn('name', 'blob');
// because of the error:
// SQLSTATE[HY000]: General error: 1 Cannot add a NOT NULL column with default value NULL
$databaseTablePrefix = $this -> container -> getParameter ( 'database_table_prefix' );
$this -> addSql ( 'CREATE TEMPORARY TABLE __temp__' . $databaseTablePrefix . 'oauth2_clients AS SELECT id, random_id, redirect_uris, secret, allowed_grant_types FROM ' . $databaseTablePrefix . 'oauth2_clients' );
$this -> addSql ( 'DROP TABLE ' . $databaseTablePrefix . 'oauth2_clients' );
$this -> addSql ( 'CREATE TABLE ' . $databaseTablePrefix . 'oauth2_clients (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, random_id VARCHAR(255) NOT NULL COLLATE BINARY, secret VARCHAR(255) NOT NULL COLLATE BINARY, redirect_uris CLOB NOT NULL, allowed_grant_types CLOB NOT NULL, name CLOB NOT NULL, PRIMARY KEY(id), CONSTRAINT FK_635D765EA76ED395 FOREIGN KEY (user_id) REFERENCES "' . $databaseTablePrefix . 'user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE)' );
$this -> addSql ( 'INSERT INTO ' . $databaseTablePrefix . 'oauth2_clients (id, random_id, redirect_uris, secret, allowed_grant_types) SELECT id, random_id, redirect_uris, secret, allowed_grant_types FROM __temp__' . $databaseTablePrefix . 'oauth2_clients' );
$this -> addSql ( 'DROP TABLE __temp__' . $databaseTablePrefix . 'oauth2_clients' );
$this -> addSql ( 'CREATE INDEX IDX_635D765EA76ED395 ON ' . $databaseTablePrefix . 'oauth2_clients (user_id)' );
} else {
$clientsTable -> addColumn ( 'name' , 'blob' );
}
2016-05-21 16:09:38 +00:00
}
2022-12-14 13:36:29 +00:00
public function down ( Schema $schema ) : void
2016-05-21 16:09:38 +00:00
{
2016-11-26 15:06:14 +00:00
$clientsTable = $schema -> getTable ( $this -> getTable ( 'oauth2_clients' ));
2017-11-04 20:23:18 +00:00
2023-08-05 17:35:09 +00:00
if ( $this -> connection -> getDatabasePlatform () instanceof SqlitePlatform ) {
2017-11-04 20:23:18 +00:00
$databaseTablePrefix = $this -> container -> getParameter ( 'database_table_prefix' );
$this -> addSql ( 'DROP INDEX IDX_635D765EA76ED395' );
$this -> addSql ( 'CREATE TEMPORARY TABLE __temp__' . $databaseTablePrefix . 'oauth2_clients AS SELECT id, random_id, redirect_uris, secret, allowed_grant_types FROM ' . $databaseTablePrefix . 'oauth2_clients' );
$this -> addSql ( 'DROP TABLE ' . $databaseTablePrefix . 'oauth2_clients' );
$this -> addSql ( 'CREATE TABLE ' . $databaseTablePrefix . 'oauth2_clients (id INTEGER NOT NULL, random_id VARCHAR(255) NOT NULL, secret VARCHAR(255) NOT NULL, redirect_uris CLOB NOT NULL COLLATE BINARY, allowed_grant_types CLOB NOT NULL COLLATE BINARY, PRIMARY KEY(id))' );
$this -> addSql ( 'INSERT INTO ' . $databaseTablePrefix . 'oauth2_clients (id, random_id, redirect_uris, secret, allowed_grant_types) SELECT id, random_id, redirect_uris, secret, allowed_grant_types FROM __temp__' . $databaseTablePrefix . 'oauth2_clients' );
$this -> addSql ( 'DROP TABLE __temp__' . $databaseTablePrefix . 'oauth2_clients' );
} else {
$clientsTable -> dropColumn ( 'name' );
}
2016-05-21 16:09:38 +00:00
}
}