package model

import android.app.Application
import android.content.Context
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
import androidx.room.TypeConverters

//Основной класс для подключения к БД.
@Database(entities = [TaskEntity::class], version = 1)
//Подключение конверторов.
@TypeConverters(Converters::class)
abstract class AppDatabase : RoomDatabase() {
    companion object{
        var INSTANCE: AppDatabase? = null
        //Метод для получения подключения к БД.
        fun getInstance(context: Context): AppDatabase {
            if (INSTANCE == null) {
                synchronized(this) {
                    val instance = Room.databaseBuilder(
                        context.applicationContext,
                        AppDatabase::class.java,
                        "task_database"
                    )
                        .allowMainThreadQueries() /*Без этого не работает нормально. Как-то связано с потоками.*/
                        .build()
                    INSTANCE = instance
                    return instance
                }
            }
            return INSTANCE!!
        }
    }

    /*Подключение DAO*/
    abstract fun taskDao(): TaskDao
}