package com.dano.test1.data

import androidx.room.Database
import androidx.room.RoomDatabase

/*
Zentrale Room-Datenbank der App. Diese Klasse beschreibt:
 - welche Tabellen (entities) es gibt: Client, Questionnaire, Question, Answer, CompletedQuestionnaire
 - die Datenbank-Version (version = 1) für Migrations/Schema-Updates

Über die abstrakten DAO-Getter (clientDao(), questionnaireDao(), …) erhält der Rest der App Typsichere Zugriffe auf die jeweiligen Tabellen.

Hinweis:
 - Room erzeugt zur Build-Zeit die konkrete Implementierung dieser abstrakten Klasse.
 - Eine Instanz der Datenbank wird typischerweise per Room.databaseBuilder(...) erstellt und als Singleton verwendet.
 */

@Database(
    entities = [
        Client::class,
        Questionnaire::class,
        Question::class,
        Answer::class,
        CompletedQuestionnaire::class
    ],
    version = 1,
    exportSchema = false
)
abstract class AppDatabase : RoomDatabase() {
    abstract fun clientDao(): ClientDao
    abstract fun questionnaireDao(): QuestionnaireDao
    abstract fun questionDao(): QuestionDao
    abstract fun answerDao(): AnswerDao
    abstract fun completedQuestionnaireDao(): CompletedQuestionnaireDao
}

