valkey-objects 0.1.1 → 0.1.2

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: 5d03e92ca33a8464f359b2c274cf0532ad8d61c37508e616c95a53257f0f9ae8
4
- data.tar.gz: 1d9d8cf373c6bfc25df5b19bdaa25518f9a37335941d2d90e83e2014674bff4a
3
+ metadata.gz: c0a9c6aca1b5339587ab8d14cba5dee0fa05f0ffdb3460fd349282d384c76038
4
+ data.tar.gz: 4d542d22a756ae8ce4dff600aae73f6f9a4cc41deb0db7abe91b6395a042fb02
5
5
  SHA512:
6
- metadata.gz: 878958d481d68dd9d066411cf66479772055cac8bfd74dfd4dbc37ced8628581c2d03f1fabb4fc3d6eb1265e440bc31d280683dc93fa8e8e4ae1752cf76b3d37
7
- data.tar.gz: 9f6a3e4824e27cdcb1c4ee0e9d6931b9a8d8af682d93892950285a609a5dba0ce571d4f15e309e62ef07d234e45031fb76175d55fe98ef6c24cc635b287078a5
6
+ metadata.gz: 50cff3351928a9b7f66f871f9fdab25f65646e7b4978eb981f1e9671babe40472e95a1d8e5c8121aa285cc64fb6148ee8488af852b8de9b87ed17338274e1bbc
7
+ data.tar.gz: e823ed4e7c79546888de0e527384fb02860c992b8ac5ad8c09072ba9ba9d461c312cb64dfc7867a60dda0aca55ca0aee889a6fc0e1c5db2db222da5da403be9a
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Valkey
4
4
  module Objects
5
- VERSION = "0.1.1"
5
+ VERSION = "0.1.2"
6
6
  end
7
7
  end
@@ -12,15 +12,105 @@ module VK
12
12
  end
13
13
 
14
14
  def self.extended(x)
15
+ ##
16
+ # Example:
17
+ # class ExmpleObject
18
+ # include VK
19
+ # value :myValue
20
+ # counter :myCounter
21
+ # hashkey :myHashKey
22
+ # sortedset :mySortedSet
23
+ # set :mySet
24
+ # queue :myQueue
25
+ # place :myPlace
26
+ # pipe :myPipe
27
+ # toggle :myToggle
28
+ # def initialize k
29
+ # @id = k
30
+ # end
31
+ # end
32
+ #
33
+ # Instantiation: @obj = ExampleObject.new('object id...')
15
34
  xx = x.name.gsub("::", "-")
35
+ ##
36
+ # value :myValue
37
+ # @obj.myValue => A string
38
+ # @obj.myValue.value = "my value"
39
+ # @obj.myValue.value => "my value"
16
40
  define_method(:value) { |k| define_method(k.to_sym) { V.new(%[#{xx}:value:#{k}:#{@id}]) } };
41
+ ##
42
+ # counter :myCounter => A number
43
+ # @obj.myCounter
44
+ # @obj.myCounter.value = number
45
+ # @obj.myCounter.value => ...
46
+ # @obj.myCounter.incr number
47
+ # @obj.myCounter.decr number
48
+ #
17
49
  define_method(:counter) { |k| define_method(k.to_sym) { C.new(%[#{xx}:counter:#{k}:#{@id}]); } };
50
+ ##
51
+ #
52
+ define_method(:timestamp) { |k| define_method(k.to_sym) { N.new(%[#{xx}:counter:#{k}:#{@id}]) } }
53
+ ##
54
+ # hashkey :myHashKey => The ubiquitous Ruby Hash in valkey/redis
55
+ # @obj.myHashKey
56
+ # @obj.myHashKey[:key] = value
57
+ # @obj.myHashKey[:key] => ...
58
+ #
18
59
  define_method(:hashkey) { |k| define_method(k.to_sym) { H.new(%[#{xx}:hash:#{k}:#{@id}]); } };
60
+ ##
61
+ # sortedset :mySortedSet => A ranked collection of members
62
+ # @obj.mySortedSet
63
+ # @obj.mySortedSet[:key] = value
64
+ # @obj.mySortedSet[:key] => ...
65
+ # @obj.mySortedSet.value { |key, i| ... }
66
+ # @obj.mySortedSet.poke key, number
67
+ #
19
68
  define_method(:sortedset) { |k| define_method(k.to_sym) { S.new(%[#{xx}:sortedset:#{k}:#{@id}]); } };
69
+ ##
70
+ # set :mySet => A collect of unique members
71
+ # @obj.mySet
72
+ # @obj.mySet << "x"
73
+ # @obj.myset.rm "x"
74
+ # @obj.mySet & @obj.otherSet
75
+ # @obj.mySet | @obj.otherSet
76
+ # @obj.myset["pattern"]
77
+ # @obj.mySet.value { |key, i| ... }
78
+ #
20
79
  define_method(:set) { |k| define_method(k.to_sym) { G.new(%[#{xx}:set:#{k}:#{@id}]); } };
80
+ ##
81
+ # queue :myQueue => An array with push and pop utility
82
+ # @obj.myQueue
83
+ # @obj.myQueue << "x"
84
+ # @obj.myQueue.front => "x" and pop
85
+ # @obj.myQueue.value { |key, i| ... }
86
+ #
21
87
  define_method(:queue) { |k| define_method(k.to_sym) { Q.new(%[#{xx}:queue:#{k}:#{@id}]); } };
88
+ ##
89
+ # place :myPlace => GPS Coordinates
90
+ # @obj.myPlace
91
+ # @obj.myPlace.add "key", longitude, latitude
92
+ # @obj.myPlace["key"] => { longitude: xx, latitude: yy }
93
+ # @obj.myPlace.distance "key", "other key"
94
+ # @obj.myPlace.radius longitude, latitude, distance
95
+ # @obj.myPlace.value { |key, i| ... }
96
+ #
22
97
  define_method(:place) { |k| define_method(k.to_sym) { P.new(%[#{xx}:place:#{k}:#{@id}]); } };
98
+ ##
99
+ # pipe :myPipe => Subscibe and handle, and publish.
100
+ # @obj.myPipe
101
+ # @obj.myPipe.on { |msg| ... }
102
+ # @obj.myPipe << "input" => publish { input: "input" }
103
+ # @obj.myPipe << ["input","input"] => publish { inputs: ["input", "input"] }
104
+ # @obj.myPipe << {} => publish {}
105
+ #
23
106
  define_method(:pipe) { |k| define_method(k.to_sym) { B.new(%[#{xx}:pipe:#{k}:#{@id}]); } };
107
+ ##
108
+ # toggle :myToggle => Boolean toggle.
109
+ # @obj.myToggle
110
+ # @obj.value = bool
111
+ # @obj.value => ...
112
+ # @obj.value! => value = !value
113
+ #
24
114
  define_method(:toggle) { |k| define_method(k.to_sym) { T.new(%[#{xx}:toggle:#{k}:#{@id}]); } };
25
115
  end
26
116
 
@@ -75,6 +165,15 @@ module VK
75
165
  end
76
166
  end
77
167
 
168
+ class N < O
169
+ def value
170
+ VK.redis.call("GET", key).to_i;
171
+ end
172
+ def value!
173
+ VK.redis.call("SET", key, "#{VK.clock.to_i}");
174
+ end
175
+ end
176
+
78
177
  class T < O
79
178
  def value
80
179
  VK.redis.call("GET", key) == 'true' ? true : false
@@ -155,7 +254,7 @@ module VK
155
254
 
156
255
  class Q < O
157
256
  def value &b
158
- VK.redis.call("LRANGE", key, 0, -1, 'WITHSCORES').each_with_index { |e, i| b.call(i, e) }
257
+ VK.redis.call("LRANGE", key, 0, -1).each_with_index { |e, i| b.call(i, e) }
159
258
  end
160
259
  def length
161
260
  VK.redis.call("LLEN", key)
@@ -237,6 +336,3 @@ module VK
237
336
  end
238
337
  end
239
338
 
240
-
241
-
242
-
Binary file
@@ -32,7 +32,6 @@ Gem::Specification.new do |spec|
32
32
 
33
33
  # Uncomment to register a new dependency of your gem
34
34
  spec.add_dependency "redis-client"
35
- spec.add_dependency "awesome_print"
36
35
  spec.add_dependency "json"
37
36
  spec.add_dependency "ruby-duration"
38
37
  # For more information and examples about making a new gem, check out our
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: valkey-objects
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Erik Olson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-10-19 00:00:00.000000000 Z
11
+ date: 2024-12-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis-client
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: awesome_print
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: json
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -74,7 +60,6 @@ extensions: []
74
60
  extra_rdoc_files: []
75
61
  files:
76
62
  - "#class.rb#"
77
- - ".#class.rb"
78
63
  - CHANGELOG.md
79
64
  - CODE_OF_CONDUCT.md
80
65
  - LICENSE.txt
@@ -87,6 +72,7 @@ files:
87
72
  - module.rb~
88
73
  - sig/valkey/objects.rbs
89
74
  - valkey-objects-0.1.0.gem
75
+ - valkey-objects-0.1.1.gem
90
76
  - valkey-objects.gemspec
91
77
  homepage: https://github.com/xorgnak/valkey-client
92
78
  licenses:
data/.#class.rb DELETED
@@ -1 +0,0 @@
1
- erik@z4-home.3169:1729306329