diff --git a/server/build.gradle.kts b/server/build.gradle.kts index 2cf6da9c..7abbfdf9 100644 --- a/server/build.gradle.kts +++ b/server/build.gradle.kts @@ -45,7 +45,7 @@ dependencies { implementation("com.h2database:h2:1.4.200") // Exposed Migrations - val exposedMigrationsVersion = "3.0.0" + val exposedMigrationsVersion = "3.1.0" implementation("com.github.Suwayomi:exposed-migrations:$exposedMigrationsVersion") // tray icon diff --git a/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0001_Initial.kt b/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0001_Initial.kt index 4e2474a2..784b5c5b 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0001_Initial.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0001_Initial.kt @@ -7,15 +7,16 @@ package suwayomi.tachidesk.server.database.migration * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import de.neonew.exposed.migrations.Migration +import de.neonew.exposed.migrations.helpers.AddTableMigration import eu.kanade.tachiyomi.source.model.SManga import org.jetbrains.exposed.dao.id.IdTable import org.jetbrains.exposed.dao.id.IntIdTable -import org.jetbrains.exposed.sql.SchemaUtils -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.sql.Table + @Suppress("ClassName", "unused") -class M0001_Initial : Migration() { +/** initial migration, create all tables */ +class M0001_Initial : AddTableMigration() { private class ExtensionTable : IntIdTable() { init { varchar("apk_name", 1024) @@ -111,9 +112,8 @@ class M0001_Initial : Migration() { } } - /** initial migration, create all tables */ - override fun run() { - transaction { + override val tables: Array + get() { val extensionTable = ExtensionTable() val sourceTable = SourceTable(extensionTable) val mangaTable = MangaTable() @@ -121,7 +121,8 @@ class M0001_Initial : Migration() { val pageTable = PageTable(chapterTable) val categoryTable = CategoryTable() val categoryMangaTable = CategoryMangaTable(categoryTable, mangaTable) - SchemaUtils.create( + + return arrayOf( extensionTable, sourceTable, mangaTable, @@ -131,5 +132,4 @@ class M0001_Initial : Migration() { categoryMangaTable, ) } - } } diff --git a/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0002_ChapterTableIndexRename.kt b/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0002_ChapterTableIndexRename.kt index 2027bc2e..028af7a2 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0002_ChapterTableIndexRename.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0002_ChapterTableIndexRename.kt @@ -7,18 +7,11 @@ package suwayomi.tachidesk.server.database.migration * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import de.neonew.exposed.migrations.Migration -import org.jetbrains.exposed.sql.transactions.TransactionManager -import org.jetbrains.exposed.sql.vendors.currentDialect +import de.neonew.exposed.migrations.helpers.RenameFieldMigration @Suppress("ClassName", "unused") -class M0002_ChapterTableIndexRename : Migration() { - /** this migration renamed ChapterTable.NUMBER_IN_LIST to ChapterTable.INDEX */ - override fun run() { - with(TransactionManager.current()) { - exec("ALTER TABLE CHAPTER ALTER COLUMN NUMBER_IN_LIST RENAME TO INDEX") - commit() - currentDialect.resetCaches() - } - } -} +class M0002_ChapterTableIndexRename : RenameFieldMigration( + "Chapter", + "number_in_list", + "index" +) diff --git a/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0003_DefaultCategory.kt b/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0003_DefaultCategory.kt index a65f6c49..3f49612d 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0003_DefaultCategory.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0003_DefaultCategory.kt @@ -7,18 +7,11 @@ package suwayomi.tachidesk.server.database.migration * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import de.neonew.exposed.migrations.Migration -import org.jetbrains.exposed.sql.transactions.TransactionManager -import org.jetbrains.exposed.sql.vendors.currentDialect +import de.neonew.exposed.migrations.helpers.RenameFieldMigration @Suppress("ClassName", "unused") -class M0003_DefaultCategory : Migration() { - /** this migration renamed CategoryTable.IS_LANDING to ChapterTable.IS_DEFAULT */ - override fun run() { - with(TransactionManager.current()) { - exec("ALTER TABLE CATEGORY ALTER COLUMN IS_LANDING RENAME TO IS_DEFAULT") - commit() - currentDialect.resetCaches() - } - } -} +class M0003_DefaultCategory : RenameFieldMigration( + "Category", + "is_landing", + "is_default" +) diff --git a/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0004_AnimeTablesBatch1.kt b/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0004_AnimeTablesBatch1.kt index edded104..2c058282 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0004_AnimeTablesBatch1.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0004_AnimeTablesBatch1.kt @@ -7,14 +7,13 @@ package suwayomi.tachidesk.server.database.migration * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import de.neonew.exposed.migrations.Migration +import de.neonew.exposed.migrations.helpers.AddTableMigration import org.jetbrains.exposed.dao.id.IdTable import org.jetbrains.exposed.dao.id.IntIdTable -import org.jetbrains.exposed.sql.SchemaUtils -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.sql.Table @Suppress("ClassName", "unused") -class M0004_AnimeTablesBatch1 : Migration() { +class M0004_AnimeTablesBatch1 : AddTableMigration() { private class AnimeExtensionTable : IntIdTable() { val apkName = varchar("apk_name", 1024) @@ -44,12 +43,9 @@ class M0004_AnimeTablesBatch1 : Migration() { val partOfFactorySource = bool("part_of_factory_source").default(false) } - override fun run() { - transaction { - SchemaUtils.create( - AnimeExtensionTable(), - AnimeSourceTable() - ) - } - } + override val tables: Array
+ get() = arrayOf( + AnimeExtensionTable(), + AnimeSourceTable() + ) } diff --git a/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0005_AnimeTablesBatch2.kt b/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0005_AnimeTablesBatch2.kt index 4f544381..49c19a7d 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0005_AnimeTablesBatch2.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0005_AnimeTablesBatch2.kt @@ -7,14 +7,13 @@ package suwayomi.tachidesk.server.database.migration * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import de.neonew.exposed.migrations.Migration +import de.neonew.exposed.migrations.helpers.AddTableMigration import eu.kanade.tachiyomi.animesource.model.SAnime import org.jetbrains.exposed.dao.id.IntIdTable -import org.jetbrains.exposed.sql.SchemaUtils -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.sql.Table @Suppress("ClassName", "unused") -class M0005_AnimeTablesBatch2 : Migration() { +class M0005_AnimeTablesBatch2 : AddTableMigration() { private class AnimeTable : IntIdTable() { val url = varchar("url", 2048) val title = varchar("title", 512) @@ -36,11 +35,8 @@ class M0005_AnimeTablesBatch2 : Migration() { val sourceReference = long("source") } - override fun run() { - transaction { - SchemaUtils.create( - AnimeTable() - ) - } - } + override val tables: Array
+ get() = arrayOf( + AnimeTable() + ) } diff --git a/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0006_AnimeTablesBatch3.kt b/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0006_AnimeTablesBatch3.kt index b799183d..cad0ca79 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0006_AnimeTablesBatch3.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0006_AnimeTablesBatch3.kt @@ -7,14 +7,13 @@ package suwayomi.tachidesk.server.database.migration * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import de.neonew.exposed.migrations.Migration +import de.neonew.exposed.migrations.helpers.AddTableMigration import org.jetbrains.exposed.dao.id.IntIdTable -import org.jetbrains.exposed.sql.SchemaUtils -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.sql.Table import suwayomi.tachidesk.anime.model.table.AnimeTable @Suppress("ClassName", "unused") -class M0006_AnimeTablesBatch3 : Migration() { +class M0006_AnimeTablesBatch3 : AddTableMigration() { private class EpisodeTable : IntIdTable() { val url = varchar("url", 2048) val name = varchar("name", 512) @@ -32,11 +31,8 @@ class M0006_AnimeTablesBatch3 : Migration() { val anime = reference("anime", AnimeTable) } - override fun run() { - transaction { - SchemaUtils.create( - EpisodeTable() - ) - } - } + override val tables: Array
+ get() = arrayOf( + EpisodeTable() + ) } diff --git a/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0007_ChapterIsDownloaded.kt b/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0007_ChapterIsDownloaded.kt index 5a532411..51d2a320 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0007_ChapterIsDownloaded.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0007_ChapterIsDownloaded.kt @@ -7,18 +7,12 @@ package suwayomi.tachidesk.server.database.migration * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import de.neonew.exposed.migrations.Migration -import org.jetbrains.exposed.sql.transactions.TransactionManager -import org.jetbrains.exposed.sql.vendors.currentDialect +import de.neonew.exposed.migrations.helpers.AddColumnMigration @Suppress("ClassName", "unused") -class M0007_ChapterIsDownloaded : Migration() { - /** this migration added IS_DOWNLOADED to CHAPTER */ - override fun run() { - with(TransactionManager.current()) { - exec("ALTER TABLE CHAPTER ADD COLUMN IS_DOWNLOADED BOOLEAN DEFAULT FALSE") - commit() - currentDialect.resetCaches() - } - } -} +class M0007_ChapterIsDownloaded : AddColumnMigration( + "Chapter", + "is_downloaded", + "BOOLEAN", + "FALSE" +) diff --git a/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0008_ChapterPageCount.kt b/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0008_ChapterPageCount.kt index 76fdd2f1..842fa85d 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0008_ChapterPageCount.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0008_ChapterPageCount.kt @@ -7,18 +7,12 @@ package suwayomi.tachidesk.server.database.migration * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import de.neonew.exposed.migrations.Migration -import org.jetbrains.exposed.sql.transactions.TransactionManager -import org.jetbrains.exposed.sql.vendors.currentDialect +import de.neonew.exposed.migrations.helpers.AddColumnMigration @Suppress("ClassName", "unused") -class M0008_ChapterPageCount : Migration() { - /** this migration added PAGE_COUNT to CHAPTER */ - override fun run() { - with(TransactionManager.current()) { - exec("ALTER TABLE CHAPTER ADD COLUMN PAGE_COUNT INT DEFAULT -1") - commit() - currentDialect.resetCaches() - } - } -} +class M0008_ChapterPageCount : AddColumnMigration( + "Chapter", + "page_count", + "INT", + "-1" +) diff --git a/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0009_ChapterLastReadAt.kt b/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0009_ChapterLastReadAt.kt index 028391b8..2dfa51a1 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0009_ChapterLastReadAt.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0009_ChapterLastReadAt.kt @@ -7,19 +7,12 @@ package suwayomi.tachidesk.server.database.migration * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import de.neonew.exposed.migrations.Migration -import org.jetbrains.exposed.sql.transactions.TransactionManager -import org.jetbrains.exposed.sql.vendors.currentDialect +import de.neonew.exposed.migrations.helpers.AddColumnMigration @Suppress("ClassName", "unused") -class M0009_ChapterLastReadAt : Migration() { - /** this migration added PAGE_COUNT to CHAPTER */ - override fun run() { - with(TransactionManager.current()) { - // BIGINT == Long - exec("ALTER TABLE CHAPTER ADD COLUMN LAST_READ_AT BIGINT DEFAULT 0") - commit() - currentDialect.resetCaches() - } - } -} +class M0009_ChapterLastReadAt : AddColumnMigration( + "Chapter", + "last_read_at", + "BIGINT", // BIGINT == Long + "0" +) diff --git a/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0010_MangaAndChapterMeta.kt b/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0010_MangaAndChapterMeta.kt index be9ab9d2..64896ba6 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0010_MangaAndChapterMeta.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0010_MangaAndChapterMeta.kt @@ -1,39 +1,36 @@ package suwayomi.tachidesk.server.database.migration -import de.neonew.exposed.migrations.Migration -import org.jetbrains.exposed.dao.id.IntIdTable -import org.jetbrains.exposed.sql.ReferenceOption -import org.jetbrains.exposed.sql.SchemaUtils -import org.jetbrains.exposed.sql.transactions.transaction -import suwayomi.tachidesk.manga.model.table.ChapterTable -import suwayomi.tachidesk.manga.model.table.MangaTable - /* * Copyright (C) Contributors to the Suwayomi project - * + * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ +import de.neonew.exposed.migrations.helpers.AddTableMigration +import org.jetbrains.exposed.dao.id.IntIdTable +import org.jetbrains.exposed.sql.ReferenceOption +import org.jetbrains.exposed.sql.Table +import suwayomi.tachidesk.manga.model.table.ChapterTable +import suwayomi.tachidesk.manga.model.table.MangaTable + @Suppress("ClassName", "unused") -class M0010_MangaAndChapterMeta : Migration() { +class M0010_MangaAndChapterMeta : AddTableMigration() { private class ChapterMetaTable : IntIdTable() { val key = varchar("key", 256) val value = varchar("value", 4096) val ref = reference("chapter_ref", ChapterTable, ReferenceOption.CASCADE) } + private class MangaMetaTable : IntIdTable() { val key = varchar("key", 256) val value = varchar("value", 4096) val ref = reference("manga_ref", MangaTable, ReferenceOption.CASCADE) } - override fun run() { - transaction { - SchemaUtils.create( - ChapterMetaTable(), - MangaMetaTable() - ) - } - } + override val tables: Array
+ get() = arrayOf( + ChapterMetaTable(), + MangaMetaTable() + ) }