diff --git a/common/src/main/java/me/confuser/banmanager/webenhancer/common/WebEnhancerPlugin.java b/common/src/main/java/me/confuser/banmanager/webenhancer/common/WebEnhancerPlugin.java index a47a61d..bbed957 100644 --- a/common/src/main/java/me/confuser/banmanager/webenhancer/common/WebEnhancerPlugin.java +++ b/common/src/main/java/me/confuser/banmanager/webenhancer/common/WebEnhancerPlugin.java @@ -6,6 +6,7 @@ import me.confuser.banmanager.common.commands.CommonCommand; import me.confuser.banmanager.common.configs.Config; import me.confuser.banmanager.common.configs.PluginInfo; +import me.confuser.banmanager.common.storage.migration.MigrationRunner; import me.confuser.banmanager.webenhancer.common.commands.PinCommand; import me.confuser.banmanager.webenhancer.common.configs.DefaultConfig; import me.confuser.banmanager.webenhancer.common.configs.MessagesConfig; @@ -55,6 +56,15 @@ public WebEnhancerPlugin(PluginInfo pluginInfo, CommonLogger logger, File dataFo public final void enable() throws Exception { setupConfigs(); + MigrationRunner webMigrations = new MigrationRunner( + BanManagerPlugin.getInstance(), + BmAPI.getLocalConnection(), + BanManagerPlugin.getInstance().getConfig().getLocalDb(), + "webenhancer", + "logs", + WebEnhancerPlugin.class.getClassLoader()); + webMigrations.migrate(); + try { setupStorage(); } catch (SQLException e) { diff --git a/common/src/main/java/me/confuser/banmanager/webenhancer/common/storage/LogStorage.java b/common/src/main/java/me/confuser/banmanager/webenhancer/common/storage/LogStorage.java index 90c1870..9dff03d 100644 --- a/common/src/main/java/me/confuser/banmanager/webenhancer/common/storage/LogStorage.java +++ b/common/src/main/java/me/confuser/banmanager/webenhancer/common/storage/LogStorage.java @@ -19,38 +19,6 @@ public LogStorage(ConnectionSource connection) throws SQLException { if (!isTableExists()) { TableUtils.createTable(connection, tableConfig); - } else { - try { - executeRawNoArgs("ALTER TABLE " + tableConfig.getTableName() + " CHANGE `created` `created` BIGINT UNSIGNED"); - } catch (SQLException e) { - } - - boolean columnAdded = false; - try { - executeRawNoArgs("ALTER TABLE " + tableConfig.getTableName() + - " ADD COLUMN messageHash CHAR(64)"); - columnAdded = true; - } catch (SQLException e) { - } - - try { - executeRawNoArgs("CREATE INDEX idx_" + tableConfig.getTableName() + - "_created_hash ON " + tableConfig.getTableName() + " (created, messageHash)"); - } catch (SQLException e) { - } - - if (columnAdded) { - try { - executeRawNoArgs( - "UPDATE " + tableConfig.getTableName() + - " SET messageHash = SHA2(message, 256)" + - " WHERE messageHash IS NULL" - ); - BanManagerPlugin.getInstance().getLogger().info("[WebEnhancer] Log hash migration completed"); - } catch (SQLException e) { - BanManagerPlugin.getInstance().getLogger().info("[WebEnhancer] SQL hash migration skipped (SHA2 not available) - new logs will be indexed"); - } - } } } diff --git a/common/src/main/java/me/confuser/banmanager/webenhancer/common/storage/PlayerPinStorage.java b/common/src/main/java/me/confuser/banmanager/webenhancer/common/storage/PlayerPinStorage.java index 8436860..023c274 100644 --- a/common/src/main/java/me/confuser/banmanager/webenhancer/common/storage/PlayerPinStorage.java +++ b/common/src/main/java/me/confuser/banmanager/webenhancer/common/storage/PlayerPinStorage.java @@ -31,11 +31,6 @@ public PlayerPinStorage(ConnectionSource connection) throws SQLException { if (!this.isTableExists()) { TableUtils.createTable(connection, tableConfig); - } else { - try { - executeRawNoArgs("ALTER TABLE " + tableConfig.getTableName() + " CHANGE `expires` `expires` BIGINT UNSIGNED"); - } catch (SQLException e) { - } } } diff --git a/common/src/main/resources/db/webenhancer/V1__baseline.sql b/common/src/main/resources/db/webenhancer/V1__baseline.sql new file mode 100644 index 0000000..12f9599 --- /dev/null +++ b/common/src/main/resources/db/webenhancer/V1__baseline.sql @@ -0,0 +1,10 @@ +-- Timestamp columns +ALTER TABLE ${logs} CHANGE `created` `created` BIGINT UNSIGNED; +ALTER TABLE ${playerPins} CHANGE `expires` `expires` BIGINT UNSIGNED; + +-- Message hash column + index +ALTER TABLE ${logs} ADD COLUMN messageHash CHAR(64); +CREATE INDEX idx_${logs}_created_hash ON ${logs} (created, messageHash); + +-- Backfill hashes (may fail on H2 which lacks SHA2 -- runner swallows the error) +UPDATE ${logs} SET messageHash = SHA2(message, 256) WHERE messageHash IS NULL; diff --git a/common/src/main/resources/db/webenhancer/migrations.list b/common/src/main/resources/db/webenhancer/migrations.list new file mode 100644 index 0000000..a43ed9c --- /dev/null +++ b/common/src/main/resources/db/webenhancer/migrations.list @@ -0,0 +1 @@ +V1__baseline.sql lenient