package org.octopus.internal.repositories

import org.octopus.internal.common.enums.EEntryType
import org.octopus.internal.common.models.Entry
import java.time.Month
import java.util.Date

interface EntryRepository {
    fun getById(id: Long): Entry
    fun createEntry(entry: Entry): Entry
    fun getAllRecurrentMonthlyToEndDate(endDate: Date): MutableList<Entry>
    fun getAllRecurrentOnSpecificMonths(months: List<Month>): MutableList<Entry>
    fun getAllRecurrentOnAllMonths(): MutableList<Entry>
    fun getAllFixedUpToEndDate(endDate: Date): MutableList<Entry>
    fun getAllByType(type: EEntryType): MutableList<Entry>

    fun deleteById(id: Long): Boolean
    fun deleteAll(): Boolean
}
