Class: SplitIoClient::Cache::Repositories::Impressions::RedisRepository

Inherits:
SplitIoClient::Cache::Repositories::ImpressionsRepository show all
Defined in:
lib/splitclient-rb/cache/repositories/impressions/redis_repository.rb

Constant Summary collapse

EXPIRE_SECONDS =
3600

Instance Method Summary collapse

Methods inherited from SplitIoClient::Cache::Repository

#set_string, #string

Constructor Details

#initialize(config) ⇒ RedisRepository

Returns a new instance of RedisRepository.



10
11
12
13
# File 'lib/splitclient-rb/cache/repositories/impressions/redis_repository.rb', line 10

def initialize(config)
  @config = config
  @adapter = @config.impressions_adapter
end

Instance Method Details

#add_bulk(impressions) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/splitclient-rb/cache/repositories/impressions/redis_repository.rb', line 15

def add_bulk(impressions)
  impressions_json = impressions.map do |impression|
    impression.to_json
  end

  impressions_list_size = @adapter.add_to_queue(key, impressions_json)

  # Synchronizer might not be running
  @adapter.expire(key, EXPIRE_SECONDS) if impressions_json.size == impressions_list_size
  0
rescue StandardError => e
  @config.logger.error("Exception while add_bulk: #{e}")
  0
end

#batchObject



41
42
43
# File 'lib/splitclient-rb/cache/repositories/impressions/redis_repository.rb', line 41

def batch
  get_impressions(@config.impressions_bulk_size)
end

#clearObject



45
46
47
# File 'lib/splitclient-rb/cache/repositories/impressions/redis_repository.rb', line 45

def clear
  get_impressions
end

#get_impressions(number_of_impressions = 0) ⇒ Object



30
31
32
33
34
35
36
37
38
39
# File 'lib/splitclient-rb/cache/repositories/impressions/redis_repository.rb', line 30

def get_impressions(number_of_impressions = 0)
  @adapter.get_from_queue(key, number_of_impressions).map do |e|
    impression = JSON.parse(e, symbolize_names: true)
    impression[:i][:f] = impression[:i][:f].to_sym
    impression
  end
rescue StandardError => e
  @config.logger.error("Exception while clearing impressions cache: #{e}")
  []
end

#keyObject



49
50
51
# File 'lib/splitclient-rb/cache/repositories/impressions/redis_repository.rb', line 49

def key
  @key ||= namespace_key('.impressions')
end