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()
+ )
}