public function __construct(Version $version)
 {
     $this->configuration = $version->getConfiguration();
     $this->outputWriter = $this->configuration->getOutputWriter();
     $this->connection = $this->configuration->getConnection();
     $this->sm = $this->connection->getSchemaManager();
     $this->platform = $this->connection->getDatabasePlatform();
     $this->version = $version;
 }
 public function testSkipMigrateUp()
 {
     $version = new \Doctrine\DBAL\Migrations\Version($this->config, 1, 'Doctrine\\DBAL\\Migrations\\Tests\\Functional\\MigrationSkipMigration');
     $this->assertFalse($this->config->hasVersionMigrated($version));
     $version->execute('up');
     $schema = $this->connection->getSchemaManager()->createSchema();
     $this->assertFalse($schema->hasTable('foo'));
     $this->assertTrue($this->config->hasVersionMigrated($version));
 }
Example #3
0
 public function __construct(Configuration $configuration, $version, $class)
 {
     $this->_configuration = $configuration;
     $this->_outputWriter = $configuration->getOutputWriter();
     $this->_version = $version;
     $this->_class = $class;
     $this->_connection = $configuration->getConnection();
     $this->_sm = $this->_connection->getSchemaManager();
     $this->_platform = $this->_connection->getDatabasePlatform();
     $this->_migration = new $class($this);
 }
Example #4
0
 public function __construct(Configuration $configuration, $version, $class)
 {
     $this->configuration = $configuration;
     $this->outputWriter = $configuration->getOutputWriter();
     $this->class = $class;
     $this->connection = $configuration->getConnection();
     $this->sm = $this->connection->getSchemaManager();
     $this->platform = $this->connection->getDatabasePlatform();
     $this->migration = new $class($this);
     $this->version = $this->migration->getName() ?: $version;
 }
Example #5
0
    /**
     * @brief Resynchronizes all sequences of a database after using INSERTs
     *        without leaving out the auto-incremented column.
     * @param \OC\DB\Connection $conn
     * @return null
     */
    public function resynchronizeDatabaseSequences(Connection $conn)
    {
        $databaseName = $conn->getDatabase();
        foreach ($conn->getSchemaManager()->listSequences() as $sequence) {
            $sequenceName = $sequence->getName();
            $sqlInfo = 'SELECT table_schema, table_name, column_name
				FROM information_schema.columns
				WHERE column_default = ? AND table_catalog = ?';
            $sequenceInfo = $conn->fetchAssoc($sqlInfo, array("nextval('{$sequenceName}'::regclass)", $databaseName));
            $tableName = $sequenceInfo['table_name'];
            $columnName = $sequenceInfo['column_name'];
            $sqlMaxId = "SELECT MAX({$columnName}) FROM {$tableName}";
            $sqlSetval = "SELECT setval('{$sequenceName}', ({$sqlMaxId}))";
            $conn->executeQuery($sqlSetval);
        }
    }