package ru.nbch.indicsearchservice.aggregator;

import java.nio.file.Path;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.apache.commons.lang3.mutable.MutableLong;
import ru.nbch.indicsearchservice.model.enums.DataType;
import ru.nbch.indicsearchservice.model.enums.SearchParameter;

public interface FileAggregator {
    List<DataType> getSuitableDataTypes();
    List<SearchParameter> getSuitableSearchParameters();
    List<String> getRequiredTables();

    default boolean isSuitableForDataTypeAndSearchParameter(DataType dataType, SearchParameter searchParameter) {
        return getSuitableDataTypes().contains(dataType) && getSuitableSearchParameters().contains(searchParameter);
    }

    Path aggregateFiles(Map<String, Path> tableFileMap, String memberCode, MutableLong rowCounter, UUID taskId);
}
