CREATE DATABASE IF NOT EXISTS `wago` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE `wago`; DELIMITER // CREATE PROCEDURE create_isp_tables() BEGIN DECLARE table_index INT DEFAULT 1; DECLARE value_index INT DEFAULT 1; DECLARE value_columns LONGTEXT DEFAULT ''; DECLARE stmt_sql LONGTEXT; WHILE value_index <= 200 DO SET value_columns = CONCAT(value_columns, ', `Wert', value_index, '` TEXT NULL'); SET value_index = value_index + 1; END WHILE; WHILE table_index <= 20 DO SET stmt_sql = CONCAT( 'CREATE TABLE IF NOT EXISTS `isp', LPAD(table_index, 2, '0'), '` (', '`id` INT(11) NOT NULL AUTO_INCREMENT,', '`datum` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,', '`userlevel` INT(1) NOT NULL', value_columns, ', PRIMARY KEY (`id`)', ') ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;' ); PREPARE stmt FROM stmt_sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET table_index = table_index + 1; END WHILE; END// CALL create_isp_tables()// DROP PROCEDURE create_isp_tables// DELIMITER ; CREATE TABLE IF NOT EXISTS `app_users` ( `id` INT NOT NULL AUTO_INCREMENT, `username` VARCHAR(80) NOT NULL, `name` VARCHAR(120) NOT NULL, `email` VARCHAR(160) NULL, `password_hash` VARCHAR(255) NOT NULL, `role` ENUM('viewer', 'technician', 'admin') NOT NULL DEFAULT 'viewer', `active` TINYINT(1) NOT NULL DEFAULT 1, `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `uniq_app_users_username` (`username`), UNIQUE KEY `uniq_app_users_email` (`email`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE USER IF NOT EXISTS 'root'@'%' IDENTIFIED BY 'SE3112'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;