package tv.pluto.mongo.utils.ageranges;

import com.mongodb.BasicDBObject;
import com.mongodb.client.MongoCursor;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
import org.assertj.core.util.Streams;
import tv.pluto.mongo.entities.ageranges.AgeRanges;
import tv.pluto.mongo.utils.MongoUtils;

public class AgeRangesUtils extends MongoUtils {

  public AgeRangesUtils() {
    super(new AgeRanges());
  }

  public List<AgeRanges> getAllAgeRangesWithingUpdatedDate(LocalDateTime time) {
    MongoCursor<?> iterator = genericCollection.find().iterator();
    return Streams.stream(iterator)
        .map(gen -> ((AgeRanges) gen))
        .filter(a -> a.getUpdatedAt().equals(time) || a.getUpdatedAt().isAfter(time))
        .collect(Collectors.toList());
  }

  public List<AgeRanges> getAllAgeRangesWithFilter(String countryCode) {
    BasicDBObject query = new BasicDBObject();
    query.put("countryCode", countryCode);

    MongoCursor<?> iterator = genericCollection.find(query).iterator();
    return Streams.stream(iterator).map(gen -> ((AgeRanges) gen)).collect(Collectors.toList());
  }
}
