Repository-Schicht (Category, Location, Item, Settings) #20

Closed
opened 2026-05-13 20:42:20 +00:00 by jreinemann-euris · 1 comment
jreinemann-euris commented 2026-05-13 20:42:20 +00:00 (Migrated from github.com)

Feature: Repository-Schicht

Part of: #5
Depends on: #17

Ziel

Vier Repositories kapseln den Datenbankzugriff und stellen der Business-Logik/ViewModel eine saubere API bereit.

Scope

  • CategoryRepository: getAll(): Flow, insert(), update(), delete()
  • LocationRepository: getAll(): Flow, insert(), update(), delete()
  • ItemRepository: getAll(): Flow, getById(), insert(), update(), delete(), getByCategory(), getByLocation(), getExpiringSoon()
  • SettingsRepository: getValue(), setValue(), getAll(): Flow
  • Hilt-Bindungen für alle 4 Repositories (@Binds oder @Provides)

Technische Hinweise

  • Package: de.krisenvorrat.app.data.repository
  • Interfaces im domain-Package: de.krisenvorrat.app.domain.repository
  • Implementierungen: ItemRepositoryImpl etc.
  • Alle DB-Operationen in Dispatchers.IO ausführen (suspend fun oder Flow)
  • Flow-Rückgaben direkt vom DAO weiterreichen (kein Wrapping nötig)

Akzeptanzkriterien

  • 4 Repository-Interfaces im domain-Package
  • 4 Implementierungsklassen im data-Package
  • Hilt-Bindings für alle Repositories
  • Tests: Repository-Unit-Test mit Fake-DAO oder In-Memory-DB
## Feature: Repository-Schicht Part of: #5 Depends on: #17 ### Ziel Vier Repositories kapseln den Datenbankzugriff und stellen der Business-Logik/ViewModel eine saubere API bereit. ### Scope - `CategoryRepository`: getAll(): Flow, insert(), update(), delete() - `LocationRepository`: getAll(): Flow, insert(), update(), delete() - `ItemRepository`: getAll(): Flow, getById(), insert(), update(), delete(), getByCategory(), getByLocation(), getExpiringSoon() - `SettingsRepository`: getValue(), setValue(), getAll(): Flow - Hilt-Bindungen für alle 4 Repositories (`@Binds` oder `@Provides`) ### Technische Hinweise - Package: `de.krisenvorrat.app.data.repository` - Interfaces im domain-Package: `de.krisenvorrat.app.domain.repository` - Implementierungen: `ItemRepositoryImpl` etc. - Alle DB-Operationen in `Dispatchers.IO` ausführen (suspend fun oder Flow) - Flow-Rückgaben direkt vom DAO weiterreichen (kein Wrapping nötig) ### Akzeptanzkriterien - [ ] 4 Repository-Interfaces im domain-Package - [ ] 4 Implementierungsklassen im data-Package - [ ] Hilt-Bindings für alle Repositories - [ ] Tests: Repository-Unit-Test mit Fake-DAO oder In-Memory-DB
jreinemann-euris commented 2026-05-13 21:50:14 +00:00 (Migrated from github.com)

Abgeschlossen (2026-05-13)

Zyklen: 1 (+ 1 Code-Review-Korrekturzyklus)
Tests: 20 Tests, 0 Fehler

Implementierte Artefakte

  • CategoryRepository (domain/repository): Interface mit getAll, insert, update, delete
  • LocationRepository (domain/repository): Interface mit getAll, insert, update, delete
  • ItemRepository (domain/repository): Interface mit getAll, getById, insert, update, delete, getByCategory, getByLocation, getExpiringSoon
  • SettingsRepository (domain/repository): Interface mit getValue, setValue, getAll
  • CategoryRepositoryImpl (data/repository): Implementierung mit Hilt @Inject
  • LocationRepositoryImpl (data/repository): Implementierung mit Hilt @Inject
  • ItemRepositoryImpl (data/repository): Implementierung mit Hilt @Inject
  • SettingsRepositoryImpl (data/repository): Implementierung mit Hilt @Inject
  • RepositoryModule (di): @Binds-Hilt-Modul für alle 4 Repositories

Abweichungen

  • Domain-Interfaces verwenden aktuell noch *Entity-Typen aus data.db.entity (kein eigenständiges Domain-Modell). Bewusst für dieses Ticket zurückgestellt – Clean Architecture–konforme Domain-Modelle folgen in einem späteren Ticket.
## Abgeschlossen (2026-05-13) **Zyklen:** 1 (+ 1 Code-Review-Korrekturzyklus) **Tests:** ✅ 20 Tests, 0 Fehler ### Implementierte Artefakte - ✅ CategoryRepository (domain/repository): Interface mit getAll, insert, update, delete - ✅ LocationRepository (domain/repository): Interface mit getAll, insert, update, delete - ✅ ItemRepository (domain/repository): Interface mit getAll, getById, insert, update, delete, getByCategory, getByLocation, getExpiringSoon - ✅ SettingsRepository (domain/repository): Interface mit getValue, setValue, getAll - ✅ CategoryRepositoryImpl (data/repository): Implementierung mit Hilt @Inject - ✅ LocationRepositoryImpl (data/repository): Implementierung mit Hilt @Inject - ✅ ItemRepositoryImpl (data/repository): Implementierung mit Hilt @Inject - ✅ SettingsRepositoryImpl (data/repository): Implementierung mit Hilt @Inject - ✅ RepositoryModule (di): @Binds-Hilt-Modul für alle 4 Repositories ### Abweichungen - Domain-Interfaces verwenden aktuell noch *Entity-Typen aus data.db.entity (kein eigenständiges Domain-Modell). Bewusst für dieses Ticket zurückgestellt – Clean Architecture–konforme Domain-Modelle folgen in einem späteren Ticket.
Sign in to join this conversation.
No description provided.