From e4ef0e051df7a523a7a820ebf1c099e34f03a5d7 Mon Sep 17 00:00:00 2001 From: Lain Iwakura Date: Mon, 16 Jun 2025 01:52:33 +0300 Subject: [PATCH] migrate optimise --- main/db.sql | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/main/db.sql b/main/db.sql index 9ac08fb..fb533da 100644 --- a/main/db.sql +++ b/main/db.sql @@ -26,4 +26,56 @@ CREATE TABLE registrations ( id INT AUTO_INCREMENT PRIMARY KEY, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, INDEX idx_created_at (created_at) -); \ No newline at end of file +); + +DELIMITER // +CREATE PROCEDURE migrate_if_needed() +BEGIN + IF NOT EXISTS (SELECT * FROM information_schema.tables WHERE table_name = 'messages') THEN + CREATE TABLE messages ( + id INT AUTO_INCREMENT PRIMARY KEY, + username VARCHAR(50) NOT NULL, + message TEXT NOT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + signature TEXT, + is_encrypted BOOLEAN DEFAULT FALSE, + INDEX idx_created_at (created_at) + ); + END IF; + + IF NOT EXISTS (SELECT * FROM information_schema.tables WHERE table_name = 'users') THEN + CREATE TABLE users ( + id INT AUTO_INCREMENT PRIMARY KEY, + username VARCHAR(50) NOT NULL UNIQUE, + password VARCHAR(255) NOT NULL, + pgp_key TEXT, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + is_moderator TINYINT(1) NOT NULL DEFAULT 0, + login_attempts INT NOT NULL DEFAULT 0, + last_attempt TIMESTAMP NULL, + is_blocked TINYINT(1) NOT NULL DEFAULT 0, + block_reason TEXT, + INDEX idx_username (username) + ); + END IF; + + IF NOT EXISTS (SELECT * FROM information_schema.tables WHERE table_name = 'registrations') THEN + CREATE TABLE registrations ( + id INT AUTO_INCREMENT PRIMARY KEY, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + INDEX idx_created_at (created_at) + ); + END IF; + + IF EXISTS ( + SELECT * FROM information_schema.columns + WHERE table_name = 'registrations' AND column_name = 'ip' + ) THEN + DROP INDEX IF EXISTS idx_ip_created ON registrations; + ALTER TABLE registrations DROP COLUMN ip; + END IF; +END // +DELIMITER ; + +CALL migrate_if_needed(); +DROP PROCEDURE IF EXISTS migrate_if_needed; \ No newline at end of file