2014-10-05 16:19:08 +02:00
|
|
|
<?php
|
|
|
|
namespace Szurubooru\Upgrades;
|
2014-10-08 14:47:47 +02:00
|
|
|
use Szurubooru\DatabaseConnection;
|
2014-10-05 16:19:08 +02:00
|
|
|
|
|
|
|
class Upgrade16 implements IUpgrade
|
|
|
|
{
|
2014-10-08 14:47:47 +02:00
|
|
|
public function run(DatabaseConnection $databaseConnection)
|
2014-10-05 16:19:08 +02:00
|
|
|
{
|
|
|
|
$pdo = $databaseConnection->getPDO();
|
|
|
|
|
|
|
|
$pdo->exec('ALTER TABLE scores ADD COLUMN commentId INTEGER');
|
|
|
|
$pdo->exec('ALTER TABLE comments ADD COLUMN score INTEGER NOT NULL DEFAULT 0');
|
|
|
|
|
|
|
|
$pdo->exec('DROP TRIGGER IF EXISTS scoresDelete');
|
|
|
|
$pdo->exec('DROP TRIGGER IF EXISTS scoresInsert');
|
|
|
|
$pdo->exec('DROP TRIGGER IF EXISTS scoresUpdate');
|
|
|
|
|
|
|
|
$pdo->exec('
|
|
|
|
CREATE TRIGGER scoresDelete AFTER DELETE ON scores
|
|
|
|
FOR EACH ROW
|
|
|
|
BEGIN
|
|
|
|
UPDATE posts SET
|
|
|
|
score = (SELECT SUM(score) FROM scores WHERE scores.postId = posts.id)
|
|
|
|
WHERE posts.id = OLD.postId;
|
|
|
|
|
|
|
|
UPDATE comments SET
|
|
|
|
score = (SELECT SUM(score) FROM scores WHERE scores.commentId = comments.id)
|
|
|
|
WHERE comments.id = OLD.commentId;
|
|
|
|
END');
|
|
|
|
|
|
|
|
$pdo->exec('
|
|
|
|
CREATE TRIGGER scoresInsert AFTER INSERT ON scores
|
|
|
|
FOR EACH ROW
|
|
|
|
BEGIN
|
|
|
|
UPDATE posts SET
|
|
|
|
score = (SELECT SUM(score) FROM scores WHERE scores.postId = posts.id)
|
|
|
|
WHERE posts.id = NEW.postId;
|
|
|
|
|
|
|
|
UPDATE comments SET
|
|
|
|
score = (SELECT SUM(score) FROM scores WHERE scores.commentId = comments.id)
|
|
|
|
WHERE comments.id = NEW.commentId;
|
|
|
|
END');
|
|
|
|
|
|
|
|
$pdo->exec('
|
|
|
|
CREATE TRIGGER scoresUpdate AFTER UPDATE ON scores
|
|
|
|
FOR EACH ROW
|
|
|
|
BEGIN
|
|
|
|
UPDATE posts SET
|
|
|
|
score = (SELECT SUM(score) FROM scores WHERE scores.postId = posts.id)
|
|
|
|
WHERE posts.id IN (OLD.postId, NEW.postId);
|
|
|
|
|
|
|
|
UPDATE comments SET
|
|
|
|
score = (SELECT SUM(score) FROM scores WHERE scores.commentId = comments.id)
|
|
|
|
WHERE comments.id IN (OLD.commentId, NEW.commentId);
|
|
|
|
END');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|