2014-09-28 15:21:25 +02:00
|
|
|
<?php
|
|
|
|
namespace Szurubooru\Upgrades;
|
|
|
|
|
|
|
|
class Upgrade11 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-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
|
|
|
}
|
|
|
|
}
|