eeprom/database/2024_12_25_123334_pools_system_with_rules.php

51 lines
2.1 KiB
PHP
Raw Normal View History

<?php
use Index\Db\DbConnection;
use Index\Db\Migration\DbMigration;
final class PoolsSystemWithRules_20241225_123334 implements DbMigration {
public function migrate(DbConnection $conn): void {
// Set NULL access timestamps to the created timestamp
$conn->execute('UPDATE prm_uploads SET upload_accessed = upload_created WHERE upload_accessed IS NULL');
// this has to happen first
$conn->execute(<<<SQL
ALTER TABLE prm_uploads
DROP FOREIGN KEY prm_uploads_application_foreign
SQL);
// Remove stuff that'll now be handled by pool rules
$conn->execute(<<<SQL
ALTER TABLE prm_uploads
CHANGE COLUMN app_id pool_id INT(10) UNSIGNED NOT NULL AFTER user_id,
CHANGE COLUMN upload_accessed upload_accessed TIMESTAMP NOT NULL DEFAULT current_timestamp() AFTER upload_created,
DROP COLUMN upload_bump,
DROP COLUMN upload_expires,
ADD INDEX prm_uploads_pool_foreign (pool_id) USING BTREE,
ADD CONSTRAINT prm_uploads_pool_foreign
FOREIGN KEY (pool_id)
REFERENCES prm_pools (pool_id)
ON UPDATE CASCADE
ON DELETE CASCADE;
SQL);
// bye bye apps
$conn->execute('DROP TABLE prm_applications');
// shh
$conn->execute('RENAME TABLE prm_blacklist TO prm_denylist');
$conn->execute(<<<SQL
ALTER TABLE prm_denylist
CHANGE COLUMN bl_hash deny_hash BINARY(32) NOT NULL FIRST,
CHANGE COLUMN bl_reason deny_reason ENUM('copyright','rules','other') NOT NULL COLLATE 'ascii_general_ci' AFTER deny_hash,
CHANGE COLUMN bl_created deny_created TIMESTAMP NOT NULL DEFAULT current_timestamp() AFTER deny_reason,
DROP PRIMARY KEY,
ADD UNIQUE INDEX prm_denylist_hash_unique (deny_hash);
SQL);
$conn->execute(<<<SQL
ALTER TABLE prm_denylist
ADD COLUMN deny_id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST,
ADD PRIMARY KEY (deny_id)
SQL);
}
}