mirror of
https://github.com/wulkanowy/wulkanowy.git
synced 2025-01-31 22:42:45 +01:00
Clear Semesters table (#535)
This commit is contained in:
parent
f9474af39e
commit
5b0901e311
@ -28,8 +28,10 @@ android {
|
|||||||
]
|
]
|
||||||
javaCompileOptions {
|
javaCompileOptions {
|
||||||
annotationProcessorOptions {
|
annotationProcessorOptions {
|
||||||
arguments = ["room.schemaLocation": "$projectDir/schemas".toString(),
|
arguments = [
|
||||||
"room.incremental" : "true"]
|
"room.schemaLocation": "$projectDir/schemas".toString(),
|
||||||
|
"room.incremental" : "true"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,14 +22,7 @@ abstract class AbstractMigrationTest {
|
|||||||
fun getMigratedRoomDatabase(): AppDatabase {
|
fun getMigratedRoomDatabase(): AppDatabase {
|
||||||
val database = Room.databaseBuilder(ApplicationProvider.getApplicationContext(),
|
val database = Room.databaseBuilder(ApplicationProvider.getApplicationContext(),
|
||||||
AppDatabase::class.java, dbName)
|
AppDatabase::class.java, dbName)
|
||||||
.addMigrations(
|
.addMigrations(*AppDatabase.getMigrations())
|
||||||
Migration12(),
|
|
||||||
Migration13(),
|
|
||||||
Migration14(),
|
|
||||||
Migration15(),
|
|
||||||
Migration16(),
|
|
||||||
Migration17()
|
|
||||||
)
|
|
||||||
.build()
|
.build()
|
||||||
// close the database and release any stream resources when the test finishes
|
// close the database and release any stream resources when the test finishes
|
||||||
helper.closeWhenFinished(database)
|
helper.closeWhenFinished(database)
|
||||||
|
@ -3,10 +3,14 @@ package io.github.wulkanowy.data.db.migrations
|
|||||||
import android.content.ContentValues
|
import android.content.ContentValues
|
||||||
import android.database.sqlite.SQLiteDatabase
|
import android.database.sqlite.SQLiteDatabase
|
||||||
import androidx.sqlite.db.SupportSQLiteDatabase
|
import androidx.sqlite.db.SupportSQLiteDatabase
|
||||||
|
import io.github.wulkanowy.data.db.Converters
|
||||||
|
import io.github.wulkanowy.data.db.entities.Semester
|
||||||
import org.junit.Assert.assertEquals
|
import org.junit.Assert.assertEquals
|
||||||
import org.junit.Assert.assertFalse
|
import org.junit.Assert.assertTrue
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
import org.threeten.bp.LocalDate.now
|
||||||
import org.threeten.bp.LocalDate.of
|
import org.threeten.bp.LocalDate.of
|
||||||
|
import kotlin.test.assertFalse
|
||||||
import kotlin.test.assertTrue
|
import kotlin.test.assertTrue
|
||||||
|
|
||||||
class Migration13Test : AbstractMigrationTest() {
|
class Migration13Test : AbstractMigrationTest() {
|
||||||
@ -97,11 +101,9 @@ class Migration13Test : AbstractMigrationTest() {
|
|||||||
close()
|
close()
|
||||||
}
|
}
|
||||||
|
|
||||||
helper.runMigrationsAndValidate(dbName, 13, true, Migration13())
|
val db = helper.runMigrationsAndValidate(dbName, 13, true, Migration13())
|
||||||
|
|
||||||
val db = getMigratedRoomDatabase()
|
val semesters1 = getSemesters(db, "SELECT * FROM Semesters WHERE student_id = 1 AND class_id = 5")
|
||||||
|
|
||||||
val semesters1 = db.semesterDao.loadAll(1, 5).blockingGet()
|
|
||||||
assertTrue { semesters1.single { it.isCurrent }.isCurrent }
|
assertTrue { semesters1.single { it.isCurrent }.isCurrent }
|
||||||
semesters1[0].run {
|
semesters1[0].run {
|
||||||
assertFalse(isCurrent)
|
assertFalse(isCurrent)
|
||||||
@ -119,7 +121,7 @@ class Migration13Test : AbstractMigrationTest() {
|
|||||||
assertEquals(2, diaryId)
|
assertEquals(2, diaryId)
|
||||||
}
|
}
|
||||||
|
|
||||||
db.semesterDao.loadAll(2, 5).blockingGet().let {
|
getSemesters(db, "SELECT * FROM Semesters WHERE student_id = 2 AND class_id = 5").let {
|
||||||
assertTrue { it.single { it.isCurrent }.isCurrent }
|
assertTrue { it.single { it.isCurrent }.isCurrent }
|
||||||
assertEquals(1970, it[0].schoolYear)
|
assertEquals(1970, it[0].schoolYear)
|
||||||
assertEquals(of(1970, 1, 1), it[0].end)
|
assertEquals(of(1970, 1, 1), it[0].end)
|
||||||
@ -130,7 +132,7 @@ class Migration13Test : AbstractMigrationTest() {
|
|||||||
assertTrue(it[3].isCurrent)
|
assertTrue(it[3].isCurrent)
|
||||||
}
|
}
|
||||||
|
|
||||||
db.semesterDao.loadAll(2, 5).blockingGet().let {
|
getSemesters(db, "SELECT * FROM Semesters WHERE student_id = 2 AND class_id = 5").let {
|
||||||
assertTrue { it.single { it.isCurrent }.isCurrent }
|
assertTrue { it.single { it.isCurrent }.isCurrent }
|
||||||
assertFalse(it[0].isCurrent)
|
assertFalse(it[0].isCurrent)
|
||||||
assertFalse(it[1].isCurrent)
|
assertFalse(it[1].isCurrent)
|
||||||
@ -139,6 +141,30 @@ class Migration13Test : AbstractMigrationTest() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun getSemesters(db: SupportSQLiteDatabase, query: String): List<Semester> {
|
||||||
|
val semesters = mutableListOf<Semester>()
|
||||||
|
|
||||||
|
val cursor = db.query(query)
|
||||||
|
if (cursor.moveToFirst()) {
|
||||||
|
do {
|
||||||
|
semesters.add(Semester(
|
||||||
|
studentId = cursor.getInt(1),
|
||||||
|
diaryId = cursor.getInt(2),
|
||||||
|
diaryName = cursor.getString(3),
|
||||||
|
semesterId = cursor.getInt(4),
|
||||||
|
semesterName = cursor.getInt(5),
|
||||||
|
isCurrent = cursor.getInt(6) == 1,
|
||||||
|
classId = cursor.getInt(7),
|
||||||
|
unitId = cursor.getInt(8),
|
||||||
|
schoolYear = cursor.getInt(9),
|
||||||
|
start = Converters().timestampToDate(cursor.getLong(10))!!,
|
||||||
|
end = Converters().timestampToDate(cursor.getLong(11))!!
|
||||||
|
))
|
||||||
|
} while (cursor.moveToNext())
|
||||||
|
}
|
||||||
|
return semesters.toList()
|
||||||
|
}
|
||||||
|
|
||||||
private fun createStudent(db: SupportSQLiteDatabase, studentId: Int, schoolName: String = "", classId: Int = -1, schoolId: Int = 123) {
|
private fun createStudent(db: SupportSQLiteDatabase, studentId: Int, schoolName: String = "", classId: Int = -1, schoolId: Int = 123) {
|
||||||
db.insert("Students", SQLiteDatabase.CONFLICT_FAIL, ContentValues().apply {
|
db.insert("Students", SQLiteDatabase.CONFLICT_FAIL, ContentValues().apply {
|
||||||
put("endpoint", "https://fakelog.cf")
|
put("endpoint", "https://fakelog.cf")
|
||||||
|
@ -6,6 +6,7 @@ import androidx.room.Room
|
|||||||
import androidx.room.RoomDatabase
|
import androidx.room.RoomDatabase
|
||||||
import androidx.room.RoomDatabase.JournalMode.TRUNCATE
|
import androidx.room.RoomDatabase.JournalMode.TRUNCATE
|
||||||
import androidx.room.TypeConverters
|
import androidx.room.TypeConverters
|
||||||
|
import androidx.room.migration.Migration
|
||||||
import io.github.wulkanowy.data.db.dao.AttendanceDao
|
import io.github.wulkanowy.data.db.dao.AttendanceDao
|
||||||
import io.github.wulkanowy.data.db.dao.AttendanceSummaryDao
|
import io.github.wulkanowy.data.db.dao.AttendanceSummaryDao
|
||||||
import io.github.wulkanowy.data.db.dao.CompletedLessonsDao
|
import io.github.wulkanowy.data.db.dao.CompletedLessonsDao
|
||||||
@ -97,29 +98,33 @@ abstract class AppDatabase : RoomDatabase() {
|
|||||||
companion object {
|
companion object {
|
||||||
const val VERSION_SCHEMA = 17
|
const val VERSION_SCHEMA = 17
|
||||||
|
|
||||||
|
fun getMigrations(): Array<Migration> {
|
||||||
|
return arrayOf(
|
||||||
|
Migration2(),
|
||||||
|
Migration3(),
|
||||||
|
Migration4(),
|
||||||
|
Migration5(),
|
||||||
|
Migration6(),
|
||||||
|
Migration7(),
|
||||||
|
Migration8(),
|
||||||
|
Migration9(),
|
||||||
|
Migration10(),
|
||||||
|
Migration11(),
|
||||||
|
Migration12(),
|
||||||
|
Migration13(),
|
||||||
|
Migration14(),
|
||||||
|
Migration15(),
|
||||||
|
Migration16(),
|
||||||
|
Migration17()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
fun newInstance(context: Context): AppDatabase {
|
fun newInstance(context: Context): AppDatabase {
|
||||||
return Room.databaseBuilder(context, AppDatabase::class.java, "wulkanowy_database")
|
return Room.databaseBuilder(context, AppDatabase::class.java, "wulkanowy_database")
|
||||||
.setJournalMode(TRUNCATE)
|
.setJournalMode(TRUNCATE)
|
||||||
.fallbackToDestructiveMigrationFrom(VERSION_SCHEMA + 1)
|
.fallbackToDestructiveMigrationFrom(VERSION_SCHEMA + 1)
|
||||||
.fallbackToDestructiveMigrationOnDowngrade()
|
.fallbackToDestructiveMigrationOnDowngrade()
|
||||||
.addMigrations(
|
.addMigrations(*getMigrations())
|
||||||
Migration2(),
|
|
||||||
Migration3(),
|
|
||||||
Migration4(),
|
|
||||||
Migration5(),
|
|
||||||
Migration6(),
|
|
||||||
Migration7(),
|
|
||||||
Migration8(),
|
|
||||||
Migration9(),
|
|
||||||
Migration10(),
|
|
||||||
Migration11(),
|
|
||||||
Migration12(),
|
|
||||||
Migration13(),
|
|
||||||
Migration14(),
|
|
||||||
Migration15(),
|
|
||||||
Migration16(),
|
|
||||||
Migration17()
|
|
||||||
)
|
|
||||||
.build()
|
.build()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,11 @@ import androidx.sqlite.db.SupportSQLiteDatabase
|
|||||||
class Migration17 : Migration(16, 17) {
|
class Migration17 : Migration(16, 17) {
|
||||||
|
|
||||||
override fun migrate(database: SupportSQLiteDatabase) {
|
override fun migrate(database: SupportSQLiteDatabase) {
|
||||||
|
createGradesPointsStatisticsTable(database)
|
||||||
|
truncateSemestersTable(database)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun createGradesPointsStatisticsTable(database: SupportSQLiteDatabase) {
|
||||||
database.execSQL("""
|
database.execSQL("""
|
||||||
CREATE TABLE IF NOT EXISTS GradesPointsStatistics(
|
CREATE TABLE IF NOT EXISTS GradesPointsStatistics(
|
||||||
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||||
@ -17,4 +22,8 @@ class Migration17 : Migration(16, 17) {
|
|||||||
)
|
)
|
||||||
""")
|
""")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun truncateSemestersTable(database: SupportSQLiteDatabase) {
|
||||||
|
database.execSQL("DELETE FROM Semesters")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user