// Copyright © 2016 HSL <https://www.hsl.fi>
// This program is dual-licensed under the EUPL v1.2 and AGPLv3 licenses.
package fi.hsl.parkandride.core.back;
import com.mysema.commons.lang.CloseableIterator;
import fi.hsl.parkandride.core.domain.Utilization;
import fi.hsl.parkandride.core.domain.UtilizationKey;
import fi.hsl.parkandride.core.domain.UtilizationSearch;
import org.joda.time.DateTime;
import org.joda.time.Minutes;
import java.util.List;
import java.util.Optional;
import java.util.Set;
public interface UtilizationRepository {
void insertUtilizations(List<Utilization> utilizations);
Set<Utilization> findLatestUtilization(Long... facilityIds);
Optional<Utilization> findUtilizationAtInstant(UtilizationKey utilizationKey, DateTime instant);
CloseableIterator<Utilization> findUtilizationsBetween(UtilizationKey utilizationKey, DateTime start, DateTime end);
List<Utilization> findUtilizationsWithResolution(UtilizationKey utilizationKey, DateTime start, DateTime end, Minutes resolution);
CloseableIterator<Utilization> findUtilizations(UtilizationSearch search);
}