forked from agzam/vyatsu-schedule
- Register AppDatabase.MIGRATION_3_4 so v3 databases upgrade without data loss - Query teacher schedule periods by containment (weekStart<=x AND weekEnd>=x) instead of exact weekStart, matching 2-week catalog windows - Clip buildTeacherSchedule days to the requested week range - Add weeksFor() to enumerate weeks of a catalog window for the UI selector - Serialize syncPeriod body with a Mutex to protect the unique index - Rethrow CancellationException before generic catch; version loadRevision checks so stale observers/loads are cancelled - Sync job tracking in PickerViewModel; keep loading true while empty - Drop dead selectTeacher helper
62 lines
2.1 KiB
Kotlin
62 lines
2.1 KiB
Kotlin
package agzam.vyatsu.di
|
|
|
|
import agzam.vyatsu.data.local.AppDatabase
|
|
import agzam.vyatsu.data.remote.GroupsParser
|
|
import agzam.vyatsu.data.remote.VyatsuHttpClient
|
|
import agzam.vyatsu.data.repository.GroupRepositoryImpl
|
|
import agzam.vyatsu.data.repository.PreferencesRepositoryImpl
|
|
import agzam.vyatsu.data.repository.ScheduleRepositoryImpl
|
|
import agzam.vyatsu.data.repository.TeacherRepositoryImpl
|
|
import agzam.vyatsu.data.repository.TeacherScheduleRepositoryImpl
|
|
import agzam.vyatsu.domain.repository.GroupRepository
|
|
import agzam.vyatsu.domain.repository.PreferencesRepository
|
|
import agzam.vyatsu.domain.repository.ScheduleRepository
|
|
import agzam.vyatsu.domain.repository.TeacherRepository
|
|
import agzam.vyatsu.domain.repository.TeacherScheduleRepository
|
|
import agzam.vyatsu.update.AppUpdater
|
|
import android.content.Context
|
|
import androidx.room.Room
|
|
|
|
class AppContainer(context: Context) {
|
|
private val database: AppDatabase = Room.databaseBuilder(
|
|
context.applicationContext,
|
|
AppDatabase::class.java,
|
|
"vyatsu_schedule.db"
|
|
)
|
|
.addMigrations(AppDatabase.MIGRATION_3_4)
|
|
.fallbackToDestructiveMigration(dropAllTables = true)
|
|
.build()
|
|
|
|
val groupRepository: GroupRepository by lazy {
|
|
GroupRepositoryImpl(
|
|
groupDao = database.groupDao(),
|
|
)
|
|
}
|
|
|
|
val scheduleRepository: ScheduleRepository by lazy {
|
|
ScheduleRepositoryImpl(
|
|
scheduleDao = database.scheduleDao(),
|
|
groupDao = database.groupDao(),
|
|
)
|
|
}
|
|
|
|
val preferencesRepository: PreferencesRepository by lazy {
|
|
PreferencesRepositoryImpl(database.preferencesDao())
|
|
}
|
|
|
|
val teacherRepository: TeacherRepository by lazy {
|
|
TeacherRepositoryImpl(teacherDao = database.teacherDao())
|
|
}
|
|
|
|
val teacherScheduleRepository: TeacherScheduleRepository by lazy {
|
|
TeacherScheduleRepositoryImpl(
|
|
scheduleDao = database.teacherScheduleDao(),
|
|
teacherDao = database.teacherDao()
|
|
)
|
|
}
|
|
|
|
val appUpdater: AppUpdater by lazy {
|
|
AppUpdater(context.applicationContext, preferencesRepository)
|
|
}
|
|
}
|