Skip to content

Commit 0cbb474

Browse files
committed
feat: add migrating new plugin id
1 parent 48223f9 commit 0cbb474

4 files changed

Lines changed: 37 additions & 0 deletions

File tree

src/main/kotlin/co/statu/rule/database/DatabaseManager.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,17 @@ class DatabaseManager(
166166
checkMigration(plugin, jdbcPool, lastSchemeVersion)
167167
}
168168

169+
suspend fun migrateNewPluginId(exPluginId: String, newPluginId: String, plugin: ParsekPlugin) {
170+
try {
171+
schemeVersionDaoImpl.renamePluginId(exPluginId, newPluginId, getConnectionPool())
172+
} catch (e: Exception) {
173+
if (plugin !is DatabasePlugin) {
174+
logger.error(e.message)
175+
exitProcess(1)
176+
}
177+
}
178+
}
179+
169180
internal fun getLatestMigration(plugin: ParsekPlugin) = migrations[plugin]?.maxByOrNull { it.SCHEME_VERSION }
170181

171182
suspend fun checkMigration(plugin: ParsekPlugin, jdbcPool: JDBCPool, lastSchemeVersion: SchemeVersion?) {

src/main/kotlin/co/statu/rule/database/ParsekEventHandler.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,12 @@ class ParsekEventHandler : ParsekEventListener {
2626
logger
2727
)
2828

29+
databaseManager.migrateNewPluginId(
30+
"database",
31+
DatabasePlugin.INSTANCE.context.pluginId,
32+
DatabasePlugin.INSTANCE
33+
)
34+
2935
databaseManager.initialize(DatabasePlugin.INSTANCE, tables, migrations)
3036

3137
val handlers = DatabasePlugin.INSTANCE.context.pluginEventManager.getEventHandlers<DatabaseEventListener>()

src/main/kotlin/co/statu/rule/database/dao/SchemeVersionDao.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,10 @@ abstract class SchemeVersionDao : Dao<SchemeVersion>(SchemeVersion::class) {
1414
pluginId: String,
1515
jdbcPool: JDBCPool
1616
): SchemeVersion?
17+
18+
abstract suspend fun renamePluginId(
19+
exPluginId: String,
20+
newPluginId: String,
21+
jdbcPool: JDBCPool
22+
)
1723
}

src/main/kotlin/co/statu/rule/database/impl/SchemeVersionDaoImpl.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,4 +63,18 @@ class SchemeVersionDaoImpl : SchemeVersionDao() {
6363

6464
return row.toEntity()
6565
}
66+
67+
override suspend fun renamePluginId(
68+
exPluginId: String,
69+
newPluginId: String,
70+
jdbcPool: JDBCPool
71+
) {
72+
val query =
73+
"ALTER TABLE `${getTablePrefix() + tableName}` UPDATE `pluginId` = ? WHERE `pluginId` = ?;"
74+
75+
jdbcPool
76+
.preparedQuery(query)
77+
.execute(Tuple.of(newPluginId, exPluginId))
78+
.await()
79+
}
6680
}

0 commit comments

Comments
 (0)