package com.gigaprojects.gigaweather.data
import android.content.Context
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
import java.util.concurrent.ExecutorService
import java.util.concurrent.Executors
@Database(entities = [LocationEntity::class, WeatherHistoryEntity::class], version = 7, exportSchema = false)
abstract class LocationDatabase : RoomDatabase() {
abstract fun locationDao(): LocationDao
abstract fun weatherHistoryDao(): WeatherHistoryDao
companion object {
@Volatile
private var INSTANCE: LocationDatabase? = null
private const val NUMBER_OF_THREADS = 4
val databaseWriteExecutor: ExecutorService =
Executors.newFixedThreadPool(NUMBER_OF_THREADS)
fun getDatabase(context: Context): LocationDatabase {
return INSTANCE ?: synchronized(this) {
val instance = Room.databaseBuilder(
context.applicationContext,
LocationDatabase::class.java,
"location_database"
)
.fallbackToDestructiveMigration(dropAllTables = true)
.build()
INSTANCE = instance
instance
}
}
}
}