szurubooru/src/Upgrades/Upgrade05.php

34 lines
1 KiB
PHP
Raw Normal View History

2014-09-21 09:35:43 +02:00
<?php
namespace Szurubooru\Upgrades;
class Upgrade05 implements IUpgrade
{
public function run(\Szurubooru\DatabaseConnection $databaseConnection)
{
$pdo = $databaseConnection->getPDO();
2014-09-28 16:26:44 +02:00
$driver = $pdo->getAttribute(\PDO::ATTR_DRIVER_NAME);
2014-09-21 09:35:43 +02:00
$pdo->exec('
CREATE TABLE tags2
(
2014-09-28 16:26:44 +02:00
id INTEGER PRIMARY KEY ' . ($driver === 'mysql' ? 'AUTO_INCREMENT' : 'AUTOINCREMENT') . ',
name VARCHAR(64) UNIQUE NOT NULL,
2014-09-21 09:35:43 +02:00
usages INTEGER NOT NULL DEFAULT 0
)');
$pdo->exec('INSERT INTO tags2(name, usages) SELECT name, (SELECT COUNT(1) FROM postTags WHERE tagName = tags.name) FROM tags');
$pdo->exec('DROP TABLE tags');
$pdo->exec('ALTER TABLE tags2 RENAME TO tags');
$pdo->exec('
CREATE TABLE postTags2
(
postId INTEGER NOT NULL,
tagId INTEGER NOT NULL,
PRIMARY KEY (postId, tagId)
)');
$pdo->exec('INSERT INTO postTags2(postId, tagId) SELECT postId, (SELECT tags.id FROM tags WHERE tags.name = postTags.tagName) FROM postTags');
$pdo->exec('DROP TABLE postTags');
$pdo->exec('ALTER TABLE postTags2 RENAME TO postTags');
}
}