// Copyright © 2015 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 fi.hsl.parkandride.core.domain.UtilizationKey;
import fi.hsl.parkandride.core.domain.prediction.Prediction;
import fi.hsl.parkandride.core.domain.prediction.PredictionBatch;
import fi.hsl.parkandride.core.service.TransactionalWrite;
import org.joda.time.DateTime;
import org.joda.time.Hours;
import org.joda.time.Minutes;
import java.util.List;
import java.util.Optional;
public interface PredictionRepository {
Hours PREDICTION_WINDOW = Hours.hours(24);
Minutes PREDICTION_RESOLUTION = Minutes.minutes(5);
void updatePredictions(PredictionBatch predictions, Long predictorId);
void updateOnlyPredictionHistory(PredictionBatch pb, Long predictorId);
Optional<PredictionBatch> getPrediction(UtilizationKey utilizationKey, DateTime time);
List<PredictionBatch> getPredictionsByFacility(Long facilityId, DateTime time);
List<Prediction> getPredictionHistoryByPredictor(Long predictorId, DateTime start, DateTime end, int forecastDistanceInMinutes);
}