package com.dano.test1

import android.app.Application
import android.util.Log
import androidx.room.Room
import androidx.room.RoomDatabase
import com.dano.test1.data.AppDatabase

/*
MyApp (Application)
 - Einstiegspunkt der App, der einmal pro Prozessstart initialisiert wird.

Besonderheiten der DB-Konfiguration:
 - Name: "questionnaire_database"
 - fallbackToDestructiveMigration():
     * Falls sich das Schema ändert und keine Migration vorliegt,wird die DB zerstört und neu angelegt.
 - setJournalMode(TRUNCATE):
     * Verwendet TRUNCATE-Journal (keine separaten -wal/-shm Dateien), es existiert nur die Hauptdatei „questionnaire_database“.
 - Callback onOpen():
     * Loggt beim Öffnen der Datenbank einen Hinweis.
*/
class MyApp : Application() {

    companion object {
        lateinit var database: AppDatabase
            private set
    }

    override fun onCreate() {
        super.onCreate()

        // Room-Datenbank bauen: nur die Hauptdatei, ohne WAL und Journal
        database = Room.databaseBuilder(
            applicationContext,
            AppDatabase::class.java,
            "questionnaire_database"
        )
            .fallbackToDestructiveMigration()
            .setJournalMode(RoomDatabase.JournalMode.TRUNCATE) // TRUNCATE = keine -wal Datei, nur Hauptdatei
            .addCallback(object : RoomDatabase.Callback() {
                override fun onOpen(db: androidx.sqlite.db.SupportSQLiteDatabase) {
                    super.onOpen(db)
                    Log.d("DB", "Datenbank geöffnet. Nur questionnaire_database wird genutzt.")
                }
            })
            .build()
    }
}
