redpear 0.3.6 → 0.4.0
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.
- data/lib/redpear/finders.rb +3 -3
- data/lib/redpear/index.rb +10 -3
- data/lib/redpear/namespace.rb +4 -4
- data/lib/redpear/set.rb +37 -0
- data/lib/redpear.rb +1 -0
- metadata +27 -26
data/lib/redpear/finders.rb
CHANGED
@@ -5,12 +5,12 @@ module Redpear::Finders
|
|
5
5
|
|
6
6
|
# @return [Array] the IDs of all existing records
|
7
7
|
def members
|
8
|
-
mb_nest
|
8
|
+
Redpear::Set.new(mb_nest)
|
9
9
|
end
|
10
10
|
|
11
11
|
# @return [Integer] the number of total records
|
12
12
|
def count
|
13
|
-
members.
|
13
|
+
members.count
|
14
14
|
end
|
15
15
|
|
16
16
|
# @return [Array] all records
|
@@ -38,7 +38,7 @@ module Redpear::Finders
|
|
38
38
|
# @param id the ID to check
|
39
39
|
# @return [Boolean] true or false
|
40
40
|
def exists?(id)
|
41
|
-
|
41
|
+
members.exists?(id)
|
42
42
|
end
|
43
43
|
|
44
44
|
def instantiate(*a)
|
data/lib/redpear/index.rb
CHANGED
@@ -3,16 +3,17 @@ class Redpear::Index < Redpear::Column
|
|
3
3
|
# @return [Redpear::Nest] the namespace of the index. Example:
|
4
4
|
#
|
5
5
|
# index = Comment.columns.lookup["post_id"]
|
6
|
-
# index.namespace # => "comments:post_id"
|
6
|
+
# index.namespace # => "comments:[post_id]"
|
7
7
|
#
|
8
8
|
def namespace
|
9
|
-
model.namespace[
|
9
|
+
model.namespace["[#{to_s}]"]
|
10
10
|
end
|
11
11
|
|
12
|
+
# @param [String] value the index value
|
12
13
|
# @return [Redpear::Nest] the nest for a specific value. Example:
|
13
14
|
#
|
14
15
|
# index = Comment.columns.lookup["post_id"]
|
15
|
-
# index.nest(123) # => "comments:post_id:123"
|
16
|
+
# index.nest(123) # => "comments:[post_id]:123"
|
16
17
|
# index.nest(nil) # => nil
|
17
18
|
# index.nest("") # => nil
|
18
19
|
#
|
@@ -21,4 +22,10 @@ class Redpear::Index < Redpear::Column
|
|
21
22
|
namespace[value]
|
22
23
|
end
|
23
24
|
|
25
|
+
# @param [String] value the index value
|
26
|
+
# @return [Array] the IDs of all existing records for a given index value
|
27
|
+
def members(value)
|
28
|
+
Redpear::Set.new nest(value)
|
29
|
+
end
|
30
|
+
|
24
31
|
end
|
data/lib/redpear/namespace.rb
CHANGED
@@ -13,11 +13,11 @@
|
|
13
13
|
# instance.nest.mapped_hmget_all # => { "post_id" => "2" }
|
14
14
|
#
|
15
15
|
# # Member nesting
|
16
|
-
# Comment.mb_nest # "comments
|
16
|
+
# Comment.mb_nest # "comments:[~]"
|
17
17
|
# Comment.mb_nest.smembers # => #<Set: {1}>
|
18
18
|
#
|
19
19
|
# # PK nesting
|
20
|
-
# Comment.pk_nest # "comments
|
20
|
+
# Comment.pk_nest # "comments:[+]"
|
21
21
|
# Comment.pk_nest.get # 1 = last ID
|
22
22
|
#
|
23
23
|
# # Index nesting
|
@@ -52,7 +52,7 @@ module Redpear::Namespace
|
|
52
52
|
# Comment.mb_nest.smembers # => [1, 2, 3]
|
53
53
|
#
|
54
54
|
def mb_nest
|
55
|
-
@mb_nest ||= namespace["
|
55
|
+
@mb_nest ||= namespace["[~]"]
|
56
56
|
end
|
57
57
|
|
58
58
|
# @return [Redpear::Nest] the nest for the primary-key incrementor. Example:
|
@@ -62,7 +62,7 @@ module Redpear::Namespace
|
|
62
62
|
# Comment.pk_nest.incr # => 1
|
63
63
|
#
|
64
64
|
def pk_nest
|
65
|
-
@pk_nest ||= namespace["+"]
|
65
|
+
@pk_nest ||= namespace["[+]"]
|
66
66
|
end
|
67
67
|
|
68
68
|
end
|
data/lib/redpear/set.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
class Redpear::Set
|
2
|
+
include Enumerable
|
3
|
+
|
4
|
+
def initialize(nest)
|
5
|
+
@nest = nest
|
6
|
+
@members = Set.new unless @nest
|
7
|
+
end
|
8
|
+
|
9
|
+
def loaded?
|
10
|
+
!@members.nil?
|
11
|
+
end
|
12
|
+
|
13
|
+
def each(&block)
|
14
|
+
members.each(&block)
|
15
|
+
end
|
16
|
+
|
17
|
+
def exists?(value)
|
18
|
+
loaded? ? @members.include?(value.to_s) : @nest.sismember(value)
|
19
|
+
end
|
20
|
+
|
21
|
+
def members
|
22
|
+
@members ||= @nest.smembers.to_set
|
23
|
+
end
|
24
|
+
|
25
|
+
def count
|
26
|
+
members.count
|
27
|
+
end
|
28
|
+
|
29
|
+
def size
|
30
|
+
members.size
|
31
|
+
end
|
32
|
+
|
33
|
+
def ==(other)
|
34
|
+
other.is_a?(Array) ? to_a == other : super
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
data/lib/redpear.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redpear
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-11-
|
12
|
+
date: 2011-11-25 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: redis
|
16
|
-
requirement: &
|
16
|
+
requirement: &12038040 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 2.2.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *12038040
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: nest
|
27
|
-
requirement: &
|
27
|
+
requirement: &12037100 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 1.1.0
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *12037100
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rake
|
38
|
-
requirement: &
|
38
|
+
requirement: &12035280 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *12035280
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: bundler
|
49
|
-
requirement: &
|
49
|
+
requirement: &12003340 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *12003340
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rspec
|
60
|
-
requirement: &
|
60
|
+
requirement: &12002220 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *12002220
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: fakeredis
|
71
|
-
requirement: &
|
71
|
+
requirement: &11972480 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *11972480
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: shoulda-matchers
|
82
|
-
requirement: &
|
82
|
+
requirement: &11969000 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,29 +87,30 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *11969000
|
91
91
|
description: Simple, elegant & efficient ORM for Redis
|
92
92
|
email: dimitrij@blacksquaremedia.com
|
93
93
|
executables: []
|
94
94
|
extensions: []
|
95
95
|
extra_rdoc_files: []
|
96
96
|
files:
|
97
|
-
- lib/redpear
|
98
|
-
- lib/redpear/namespace.rb
|
97
|
+
- lib/redpear.rb
|
99
98
|
- lib/redpear/connection.rb
|
100
|
-
- lib/redpear/
|
101
|
-
- lib/redpear/
|
102
|
-
- lib/redpear/index.rb
|
99
|
+
- lib/redpear/schema/collection.rb
|
100
|
+
- lib/redpear/core_ext/stringify_keys.rb
|
103
101
|
- lib/redpear/concern.rb
|
102
|
+
- lib/redpear/namespace.rb
|
104
103
|
- lib/redpear/nest.rb
|
105
104
|
- lib/redpear/finders.rb
|
105
|
+
- lib/redpear/persistence.rb
|
106
|
+
- lib/redpear/expiration.rb
|
107
|
+
- lib/redpear/column.rb
|
106
108
|
- lib/redpear/model.rb
|
107
|
-
- lib/redpear/
|
108
|
-
- lib/redpear/
|
109
|
-
- lib/redpear/
|
109
|
+
- lib/redpear/index.rb
|
110
|
+
- lib/redpear/set.rb
|
111
|
+
- lib/redpear/schema.rb
|
110
112
|
- lib/redpear/counters.rb
|
111
|
-
- lib/redpear/
|
112
|
-
- lib/redpear.rb
|
113
|
+
- lib/redpear/machinist.rb
|
113
114
|
homepage: https://github.com/bsm/redpear
|
114
115
|
licenses: []
|
115
116
|
post_install_message:
|