fastentry 0.1.14 → 0.1.15

Sign up to get free protection for your applications and to get access to all the features.
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