szurubooru/src/Upgrades/Upgrade11.php

61 lines
1.5 KiB
PHP
Raw Normal View History

2014-09-28 15:21:25 +02:00
<?php
namespace Szurubooru\Upgrades;
use Szurubooru\DatabaseConnection;
2014-09-28 15:21:25 +02:00
class Upgrade11 implements IUpgrade
{
public function run(DatabaseConnection $databaseConnection)
2014-09-28 15:21:25 +02:00
{
$pdo = $databaseConnection->getPDO();
$driver = $databaseConnection->getDriver();
2014-09-28 15:21:25 +02:00
$pdo->exec('CREATE TABLE postScores
(
2014-09-28 16:26:44 +02:00
id INTEGER PRIMARY KEY ' . ($driver === 'mysql' ? 'AUTO_INCREMENT' : 'AUTOINCREMENT') . ',
2014-09-28 15:21:25 +02:00
userId INTEGER NOT NULL,
postId INTEGER NOT NULL,
2014-09-28 16:26:44 +02:00
time DATETIME NOT NULL,
2014-09-28 15:21:25 +02:00
score INTEGER NOT NULL,
UNIQUE (userId, postId)
)');
$pdo->exec('
CREATE TRIGGER postScoresDelete AFTER DELETE ON postScores
FOR EACH ROW
BEGIN
UPDATE posts SET score = (
SELECT SUM(score) FROM postScores
WHERE postScores.postId = posts.id)
WHERE posts.id = OLD.postId;
END');
$pdo->exec('
CREATE TRIGGER postScoresInsert AFTER INSERT ON postScores
FOR EACH ROW
BEGIN
UPDATE posts SET score = (
SELECT SUM(score) FROM postScores
WHERE postScores.postId = posts.id)
WHERE posts.id = NEW.postId;
END');
$pdo->exec('
CREATE TRIGGER postScoresUpdate AFTER UPDATE ON postScores
FOR EACH ROW
BEGIN
UPDATE posts SET score = (
SELECT SUM(score) FROM postScores
WHERE postScores.postId = posts.id)
WHERE posts.id = OLD.postId;
UPDATE posts SET score = (
SELECT SUM(score) FROM postScores
WHERE postScores.postId = posts.id)
WHERE posts.id = NEW.postId;
END');
2014-09-28 16:26:44 +02:00
$pdo->exec('ALTER TABLE posts ADD COLUMN score INTEGER NOT NULL DEFAULT 0');
2014-09-28 15:21:25 +02:00
}
}