blob: 5b6c493c77d89d719700ac938507d662d4b05944 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
#pragma once
#include "partners_api/booking_availability_params.hpp"
#include "map/booking_filter.hpp"
#include "map/booking_filter_cache.hpp"
#include "map/booking_filter_params.hpp"
#include <memory>
namespace search
{
class Results;
}
namespace booking
{
namespace filter
{
class AvailabilityFilter : public FilterBase
{
public:
explicit AvailabilityFilter(Delegate const & d);
void ApplyFilter(search::Results const & results, ParamsInternal const & filterParams) override;
void ApplyFilter(std::vector<FeatureID> const & featureIds,
ParamsRawInternal const & params) override;
void GetFeaturesFromCache(search::Results const & results,
std::vector<FeatureID> & sortedResults) override;
void UpdateParams(ParamsBase const & apiParams) override;
private:
template <typename SourceValue, typename Source, typename Parameters>
void ApplyFilterInternal(Source const & results, Parameters const & filterParams);
using CachePtr = std::shared_ptr<availability::Cache>;
CachePtr m_cache = std::make_shared<availability::Cache>();
AvailabilityParams m_apiParams;
};
} // namespace filter
} // namespace booking
|