diff --git a/main/create.sql b/main/create.sql new file mode 100644 index 0000000..9ac08fb --- /dev/null +++ b/main/create.sql @@ -0,0 +1,29 @@ +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) +); + +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) +); + +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 diff --git a/main/migrate.sql b/main/migrate.sql new file mode 100644 index 0000000..e0e8ab4 --- /dev/null +++ b/main/migrate.sql @@ -0,0 +1,15 @@ +DELIMITER // +CREATE OR REPLACE PROCEDURE migrate_if_needed() +BEGIN + 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