feat(app): ResourceEntity + Dao + Repository + DB-Migration 8→9 #121
Labels
No labels
block-planning
bug
documentation
duplicate
enhancement
feature
good first issue
help wanted
infrastructure
invalid
planning
priority:high
priority:low
question
refactoring
status:backlog
status:done
status:in-progress
status:todo
tech-decision
test
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: bollwerkadmin/bollwerk#121
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Feature: App – ResourceEntity + ResourceDao + ResourceRepository + DB-Migration 8→9
Part of: #117
Depends on: #118
Ziel
Ressourcen werden lokal in Room gecacht, der Server-Katalog kann refresht werden, und einzelne Ressourcen können per JWT heruntergeladen werden.
Scope
ResourceEntity.kt(@Entity(tableName = "resources")) – Felder analog zuResourceDto, Tags alsString(JSON-Array via TypeConverter)ResourceDao.kt(@Dao) mit:getAll(): Flow<List<ResourceEntity>>,insertAll(...),deleteAll(),getByGuid(guid: String): ResourceEntity?List<String>↔ JSON-String inConverters.kt(falls noch nicht vorhanden)ResourceRepository(Interface) +ResourceRepositoryImpl(@Inject):getAll(): Flow<List<ResourceDto>>refreshFromServer()– GET /api/resources → Room komplett ersetzen (deleteAll + insertAll)downloadResource(guid: String): ByteArray– GET /api/resources/{guid}/download (mit JWT)BollwerkDatabaseVersion 8 → 9,@AutoMigration(from = 8, to = 9)@Provides ResourceRepositoryinDataModule.ktTechnische Hinweise
ItemRepositoryImpl.kt,ItemEntity.kt,ItemDao.ktdownloadResource(): bestehendenApiClient/HttpClientnutzen (JWT wird automatisch mitgeschickt)refreshFromServer()ist nicht transaktional im Bezug auf Offline-Sync (keinePendingSyncOpnötig – read-only vom Server)Akzeptanzkriterien
ResourceEntityist inBollwerkDatabaseeingetragen (Version 9)@AutoMigration(from = 8, to = 9)läuft ohne Datenverlust auf bestehenden DBsrefreshFromServer()ersetzt lokalen Katalog vollständiggetAll()liefert Live-Updates als FlowdownloadResource()gibt Bytes zurück (wirft bei Fehler eine Exception)ResourceDaomit In-Memory-Room-Datenbank