EggRepository.kt
package de.pflugradts.passbird.domain.service.password.tree
import de.pflugradts.kotlinextensions.TryResult
import de.pflugradts.passbird.domain.model.ddd.Repository
import de.pflugradts.passbird.domain.model.egg.Egg
import de.pflugradts.passbird.domain.model.egg.EggIdFavorites
import de.pflugradts.passbird.domain.model.egg.EggIdMemory
import de.pflugradts.passbird.domain.model.shell.EncryptedShell
import de.pflugradts.passbird.domain.model.slot.Slot
import java.util.stream.Stream
interface EggRepository : Repository {
fun sync(): TryResult<Unit>
fun add(egg: Egg)
fun delete(egg: Egg)
fun findAll(slot: Slot): Stream<Egg>
fun findAll(): Stream<Egg>
fun favorites(): EggIdFavorites
fun memory(): EggIdMemory
fun putFavorite(slot: Slot, encryptedShell: EncryptedShell)
fun discardFavorite(slot: Slot)
fun discardFavorites(nestSlot: Slot, encryptedShell: EncryptedShell)
fun discardFavorites(nestSlot: Slot)
fun renameFavorites(nestSlot: Slot, from: EncryptedShell, to: EncryptedShell)
fun updateMemory(mostRecentEgg: Egg, duplicate: EncryptedShell? = null, sync: Boolean = true)
}