insert regular event type into the database on creation

This commit is contained in:
tibbi
2018-11-13 22:41:21 +01:00
parent 7ae700db34
commit b1a263d54f
2 changed files with 26 additions and 0 deletions

View File

@@ -4,6 +4,9 @@ import android.content.Context
import androidx.room.Database import androidx.room.Database
import androidx.room.Room import androidx.room.Room
import androidx.room.RoomDatabase import androidx.room.RoomDatabase
import androidx.sqlite.db.SupportSQLiteDatabase
import com.simplemobiletools.calendar.pro.extensions.config
import com.simplemobiletools.calendar.pro.helpers.DBHelper
import com.simplemobiletools.calendar.pro.interfaces.EventRepetitionExceptionsDao import com.simplemobiletools.calendar.pro.interfaces.EventRepetitionExceptionsDao
import com.simplemobiletools.calendar.pro.interfaces.EventRepetitionsDao import com.simplemobiletools.calendar.pro.interfaces.EventRepetitionsDao
import com.simplemobiletools.calendar.pro.interfaces.EventTypesDao import com.simplemobiletools.calendar.pro.interfaces.EventTypesDao
@@ -12,6 +15,7 @@ import com.simplemobiletools.calendar.pro.models.Event
import com.simplemobiletools.calendar.pro.models.EventRepetition import com.simplemobiletools.calendar.pro.models.EventRepetition
import com.simplemobiletools.calendar.pro.models.EventRepetitionException import com.simplemobiletools.calendar.pro.models.EventRepetitionException
import com.simplemobiletools.calendar.pro.models.EventType import com.simplemobiletools.calendar.pro.models.EventType
import java.util.concurrent.Executors
@Database(entities = [Event::class, EventType::class, EventRepetition::class, EventRepetitionException::class], version = 1) @Database(entities = [Event::class, EventType::class, EventRepetition::class, EventRepetitionException::class], version = 1)
abstract class EventsDatabase : RoomDatabase() { abstract class EventsDatabase : RoomDatabase() {
@@ -32,6 +36,12 @@ abstract class EventsDatabase : RoomDatabase() {
synchronized(EventsDatabase::class) { synchronized(EventsDatabase::class) {
if (db == null) { if (db == null) {
db = Room.databaseBuilder(context.applicationContext, EventsDatabase::class.java, "events.db") db = Room.databaseBuilder(context.applicationContext, EventsDatabase::class.java, "events.db")
.addCallback(object : Callback() {
override fun onCreate(db: SupportSQLiteDatabase) {
super.onCreate(db)
insertRegularEventType(context)
}
})
.build() .build()
db!!.openHelper.setWriteAheadLoggingEnabled(true) db!!.openHelper.setWriteAheadLoggingEnabled(true)
} }
@@ -43,5 +53,13 @@ abstract class EventsDatabase : RoomDatabase() {
fun destroyInstance() { fun destroyInstance() {
db = null db = null
} }
private fun insertRegularEventType(context: Context) {
Executors.newSingleThreadScheduledExecutor().execute {
val regularEvent = context.resources.getString(R.string.regular_event)
val eventType = EventType(DBHelper.REGULAR_EVENT_TYPE_ID, regularEvent, context.config.primaryColor)
db!!.EventTypesDao().insertOrUpdate(eventType)
}
}
} }
} }

View File

@@ -1,8 +1,16 @@
package com.simplemobiletools.calendar.pro.interfaces package com.simplemobiletools.calendar.pro.interfaces
import androidx.room.Dao import androidx.room.Dao
import androidx.room.Insert
import androidx.room.OnConflictStrategy
import androidx.room.Query
import com.simplemobiletools.calendar.pro.models.EventType
@Dao @Dao
interface EventTypesDao { interface EventTypesDao {
@Query("SELECT * FROM event_types ORDER BY title ASC")
fun getEventTypes(): List<EventType>
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insertOrUpdate(eventType: EventType): Long
} }