Skip to content

Commit ab18c27

Browse files
committed
Add migrations to DB
Also add lastChapter information
1 parent 77b97e2 commit ab18c27

File tree

6 files changed

+54
-5
lines changed

6 files changed

+54
-5
lines changed

app/src/main/java/com/melonhead/mangadexfollower/extensions/DbMappingExtensions.kt

+1
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,6 @@ fun MangaEntity.Companion.from(manga: Manga): MangaEntity {
3030
MangaTag(it.id, name)
3131
},
3232
contentRating = manga.attributes.contentRating,
33+
lastChapter = manga.attributes.lastChapter
3334
)
3435
}

app/src/main/java/com/melonhead/mangadexfollower/models/content/MangaAttributes.kt

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ data class MangaAttributes(
2323
val status: String,
2424
val tags: List<MangaTags>,
2525
val contentRating: String,
26+
val lastChapter: String?,
2627
) {
2728
fun getEnglishTitles(): List<String> {
2829
val englishTitles = mutableListOf<String>()

lib-database/src/main/java/com/melonhead/lib_database/di/DbModule.kt

+10-3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.melonhead.lib_database.di
22

33
import androidx.room.Room
44
import com.melonhead.lib_database.chapter.ChapterDatabase
5+
import com.melonhead.lib_database.manga.MangaDBMigrations
56
import com.melonhead.lib_database.manga.MangaDatabase
67
import com.melonhead.lib_database.readmarkers.ReadMarkerDatabase
78
import org.koin.dsl.module
@@ -11,21 +12,27 @@ val DBModule = module {
1112
Room.databaseBuilder(
1213
get(),
1314
ChapterDatabase::class.java, "chapter"
14-
).fallbackToDestructiveMigration().build()
15+
).build()
1516
}
1617

1718
single(createdAtStart = true) {
1819
Room.databaseBuilder(
1920
get(),
2021
MangaDatabase::class.java, "manga"
21-
).fallbackToDestructiveMigration().build()
22+
).addMigrations(
23+
MangaDBMigrations.MIGRATION_1_2,
24+
MangaDBMigrations.MIGRATION_2_3,
25+
MangaDBMigrations.MIGRATION_3_4,
26+
MangaDBMigrations.MIGRATION_4_5,
27+
MangaDBMigrations.MIGRATION_5_6,
28+
).build()
2229
}
2330

2431
single(createdAtStart = true) {
2532
Room.databaseBuilder(
2633
get(),
2734
ReadMarkerDatabase::class.java, "readmarker"
28-
).fallbackToDestructiveMigration().build()
35+
).build()
2936
}
3037

3138
single {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.melonhead.lib_database.manga
2+
3+
import androidx.room.migration.Migration
4+
import androidx.sqlite.db.SupportSQLiteDatabase
5+
6+
internal object MangaDBMigrations {
7+
val MIGRATION_1_2 = object : Migration(1, 2) {
8+
override fun migrate(db: SupportSQLiteDatabase) {
9+
db.execSQL("ALTER TABLE manga ADD COLUMN if not exists status TEXT NOT NULL DEFAULT ''")
10+
}
11+
}
12+
13+
val MIGRATION_2_3 = object : Migration(2, 3) {
14+
override fun migrate(db: SupportSQLiteDatabase) {
15+
db.execSQL("ALTER TABLE manga ADD COLUMN tags TEXT NOT NULL DEFAULT ''")
16+
}
17+
}
18+
19+
val MIGRATION_3_4 = object : Migration(3, 4) {
20+
override fun migrate(db: SupportSQLiteDatabase) {
21+
db.execSQL("ALTER TABLE manga ADD COLUMN content_rating TEXT NOT NULL DEFAULT 'safe'")
22+
}
23+
}
24+
25+
val MIGRATION_4_5 = object : Migration(4, 5) {
26+
override fun migrate(db: SupportSQLiteDatabase) {
27+
db.execSQL("ALTER TABLE manga ADD COLUMN status TEXT NOT NULL DEFAULT 'ongoing'")
28+
}
29+
}
30+
31+
val MIGRATION_5_6 = object : Migration(5, 6) {
32+
override fun migrate(db: SupportSQLiteDatabase) {
33+
db.execSQL("ALTER TABLE manga ADD COLUMN last_chapter TEXT")
34+
}
35+
}
36+
}

lib-database/src/main/java/com/melonhead/lib_database/manga/MangaDatabase.kt

+5-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@ package com.melonhead.lib_database.manga
33
import androidx.room.Database
44
import androidx.room.RoomDatabase
55

6-
@Database(entities = [MangaEntity::class], version = 2)
7-
abstract class MangaDatabase: RoomDatabase() {
6+
@Database(
7+
entities = [MangaEntity::class],
8+
version = 6
9+
)
10+
internal abstract class MangaDatabase: RoomDatabase() {
811
abstract fun mangaDao(): MangaDao
912
}

lib-database/src/main/java/com/melonhead/lib_database/manga/MangaEntity.kt

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ data class MangaEntity(
1818
@ColumnInfo(name = "status") val status: String,
1919
@ColumnInfo(name = "tags") val tags: List<MangaTag>,
2020
@ColumnInfo(name = "content_rating") val contentRating: String,
21+
@ColumnInfo(name = "last_chapter") val lastChapter: String?,
2122
) {
2223
// required for mapping functions
2324
companion object

0 commit comments

Comments
 (0)