fastentry 0.1.14 → 0.1.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 325d38d0b70d65b0a0e2cb57d916f5092bb49190198a67dd1d595406e42a11ef
4
- data.tar.gz: cd6c6b96ad821df190b60a0ff7d4b4bb5187bf394963394dd1253de5935260be
3
+ metadata.gz: 7b8ed78f5b7497884d9be2d8e4f62bdd2979fdcde1216d54c478c3449d9f5587
4
+ data.tar.gz: 96080622837fa0b1073a5341483bb6256aa829512d2ed8f984380a79c6dabf9e
5
5
  SHA512:
6
- metadata.gz: 88bd1d72d2e6a4a998e61c204f297b7b31f9c8a8a6ac05513ecfdf13b911f3329afb94d10af4a49c401d37a4506a1a6384fb4e0666820b100f193aad10330851
7
- data.tar.gz: cdd4fe9065206cff0342845517fe870cf9570ae0a09e08e5ae46836a8a4b7ca4f1d5c3e48f4c5eda592ae01a666d1a873277d5fa03c0ac676c3af4cbe27c57ea
6
+ metadata.gz: d37427bae29e736d78a49f1896cbd48bb99ec56f7ab6731432cb8acde23b379e01b312c8b7b6eb8de407d8de01fa4eb7702c86d32896d0ce7a990fe7a7ab70c6
7
+ data.tar.gz: 35742b6d78495a8df86b0137ea553b06692b6eaa46ede57702ccd558da809e79941b37f52b05f6982d5b0bd7bd811ac9becb793d5c5040f6ee0b27865df5cd33
@@ -3,14 +3,18 @@ module Fastentry
3
3
  before_action :set_page, only: [:index]
4
4
 
5
5
  def index
6
- @keys = Fastentry.cache.keys
6
+ total_keys = 0
7
7
 
8
8
  if params[:query].present?
9
- @keys.select! { |key| key.downcase.include?(params[:query].downcase) }
9
+ @keys = Fastentry.cache.search(query: params[:query])
10
+ total_keys = @keys.count
11
+ @keys = @keys.try(:[], @page * @per_page, @per_page) || []
12
+ else
13
+ @keys = Fastentry.cache.select(from: @page * @per_page, amount: @per_page)
14
+ total_keys = Fastentry.cache.number_of_keys
10
15
  end
11
16
 
12
- @number_of_pages = (@keys.count / @per_page.to_f).ceil
13
- @keys = @keys[@offset, @per_page] || []
17
+ @number_of_pages = (total_keys / @per_page.to_f).ceil
14
18
 
15
19
  @cached =
16
20
  @keys.map do |key|
@@ -1,7 +1,7 @@
1
1
  module Fastentry
2
2
  class StatsController < Fastentry::ApplicationController
3
3
  def index
4
- @number_of_keys = Fastentry.cache.keys.size
4
+ @number_of_keys = Fastentry.cache.number_of_keys
5
5
  end
6
6
  end
7
7
  end
@@ -1,3 +1,3 @@
1
1
  module Fastentry
2
- VERSION = '0.1.14'
2
+ VERSION = '0.1.15'
3
3
  end
data/lib/fastentry.rb CHANGED
@@ -6,6 +6,19 @@ module Fastentry
6
6
  class Cache < SimpleDelegator
7
7
  alias cache __getobj__
8
8
 
9
+ def number_of_keys
10
+ keys.size
11
+ end
12
+
13
+ def select(from: 0, amount: 20)
14
+ count = adjusted_amount(from, amount)
15
+ keys.try(:[], from, count) || []
16
+ end
17
+
18
+ def search(query: '')
19
+ keys.select! { |key| key.downcase.include?(query.downcase) } || []
20
+ end
21
+
9
22
  def expiration_for(key)
10
23
  expires_at = cache.send(:read_entry, key, {}).expires_at
11
24
  expires_at.to_s.strip.empty? ? nil : Time.at(expires_at)
@@ -48,6 +61,12 @@ module Fastentry
48
61
  end
49
62
  end
50
63
  end
64
+
65
+ private
66
+
67
+ def adjusted_amount(from, amount)
68
+ from + amount > number_of_keys ? (number_of_keys - from) : amount
69
+ end
51
70
  end
52
71
 
53
72
  class MemcacheCache < Cache
@@ -72,6 +91,19 @@ module Fastentry
72
91
  def keys
73
92
  cache.redis.keys
74
93
  end
94
+
95
+ def number_of_keys
96
+ cache.redis.dbsize
97
+ end
98
+
99
+ def select(from: 0, amount: 20)
100
+ count = adjusted_amount(from, amount)
101
+ cache.redis.scan(from, count: count)[1]
102
+ end
103
+
104
+ def search(query: '')
105
+ cache.redis.scan_each(match: "*#{query.downcase}*").to_a.uniq
106
+ end
75
107
  end
76
108
 
77
109
  def self.cache
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastentry
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.14
4
+ version: 0.1.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tiago Alves
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-03-15 00:00:00.000000000 Z
11
+ date: 2019-03-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails