xfiredb 1.0.0 → 1.1.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.
- checksums.yaml +4 -4
- data/lib/xfiredb.rb +1 -0
- data/lib/xfiredb/client.rb +256 -3
- data/lib/xfiredb/result.rb +1 -0
- data/lib/xfiredb/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d11e78d17ca8c37ae5988f4f51d116bc6c8d5b95
|
4
|
+
data.tar.gz: ccb4c25286946a02a5b22b99afc9334510093a9e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9a196ec5d624c61c21ebd4074ddf00cf040e7b8709c0683a37a8918c7657714c6db3f2a61166931a3ef29eeff1708d0df2a99414e524a5bbfe06a9ed773107c1
|
7
|
+
data.tar.gz: ec4329bb304621dcd0299da0c901086ddbfa4307ce9f8e91e1d2955dd335b164c62be5feb00d9645b635f41042f9c4df57b41c5da7b3fc955aae7c96af477d30
|
data/lib/xfiredb.rb
CHANGED
data/lib/xfiredb/client.rb
CHANGED
@@ -69,12 +69,9 @@ module XFireDB
|
|
69
69
|
reply.chomp! if reply
|
70
70
|
num = reply.scan(/\ /).count + 1
|
71
71
|
|
72
|
-
puts num
|
73
|
-
|
74
72
|
num.times do
|
75
73
|
data = @socket.gets
|
76
74
|
data.chomp! if data
|
77
|
-
puts data
|
78
75
|
res = XFireDB::Result.new data
|
79
76
|
res.process
|
80
77
|
yield res
|
@@ -102,6 +99,262 @@ module XFireDB
|
|
102
99
|
def ssl?
|
103
100
|
@ssl
|
104
101
|
end
|
102
|
+
|
103
|
+
# -- String commands --- #
|
104
|
+
|
105
|
+
# Lookup a string key.
|
106
|
+
# @param [String] key Key to lookup.
|
107
|
+
# @return [String] The value of key. nil is returned if the key doesn't exist.
|
108
|
+
def get(key)
|
109
|
+
str = nil
|
110
|
+
self.query("GET #{key}") {|result|
|
111
|
+
str = result.data unless result.null?
|
112
|
+
}
|
113
|
+
|
114
|
+
str
|
115
|
+
end
|
116
|
+
|
117
|
+
# Set a key to a string value.
|
118
|
+
# @param [String] key Key to set.
|
119
|
+
# @param [String] data Data to set the key to.
|
120
|
+
# @return [Boolean] True on success, false otherwise.
|
121
|
+
def set(key, data)
|
122
|
+
success = false
|
123
|
+
self.query("SET #{key} \"#{data}\"") { |result|
|
124
|
+
success = result.success?
|
125
|
+
}
|
126
|
+
success
|
127
|
+
end
|
128
|
+
|
129
|
+
# Delete a key.
|
130
|
+
# @param [String] key Key to delete.
|
131
|
+
# @return [Boolean] True on success, false otherwise.
|
132
|
+
def delete(key)
|
133
|
+
success = false
|
134
|
+
self.query("DELETE #{key}") {|result|
|
135
|
+
success = result.success?
|
136
|
+
}
|
137
|
+
success
|
138
|
+
end
|
139
|
+
|
140
|
+
# Add a hashmap node to a hashmap.
|
141
|
+
# @param [String] key Hashmap to add a key to.
|
142
|
+
# @param [String] hkey Hashmap key to add.
|
143
|
+
# @param [String] data Data to store under hkey.
|
144
|
+
# @return [Boolean] True on success, false otherwise.
|
145
|
+
def map_add(key, hkey, data)
|
146
|
+
success = false
|
147
|
+
self.query("MADD #{key} #{hkey} \"#{data}\"") {|result|
|
148
|
+
success = result.success?
|
149
|
+
}
|
150
|
+
success
|
151
|
+
end
|
152
|
+
|
153
|
+
# Reference a hashmap.
|
154
|
+
# @param [String] key Hashmap to lookup.
|
155
|
+
# @param [String] args List of hashmap keys to lookup.
|
156
|
+
# @return [Hash] Hashmap of the lookup keys.
|
157
|
+
#
|
158
|
+
# @example map_ref
|
159
|
+
# map_ref('test-map', 'key1', 'key2', 'key3')
|
160
|
+
#
|
161
|
+
# @example returned data
|
162
|
+
# key1 => Key1 data
|
163
|
+
# key2 => nil # This key didn't exist in 'test-map'
|
164
|
+
# key3 => Key3 data
|
165
|
+
def map_ref(key, *args)
|
166
|
+
map = Hash.new
|
167
|
+
hkeys = args.join(' ')
|
168
|
+
i = 0
|
169
|
+
self.query("MREF #{key} #{hkeys}") {|result|
|
170
|
+
if result.success?
|
171
|
+
map[args[i]] = result.data
|
172
|
+
else
|
173
|
+
map[args[i]] = nil
|
174
|
+
end
|
175
|
+
i += 1
|
176
|
+
}
|
177
|
+
|
178
|
+
map
|
179
|
+
end
|
180
|
+
|
181
|
+
# Clear a hashmap.
|
182
|
+
# @param [String] key Hashmap to clear.
|
183
|
+
# @return [Boolean] True on success, false otherwise.
|
184
|
+
def map_clear(key)
|
185
|
+
self.delete(key)
|
186
|
+
end
|
187
|
+
|
188
|
+
# Get the size of a hashmap.
|
189
|
+
# @param [String] key Hashmap to get the size of.
|
190
|
+
# @return [Fixnum] Number of hashmap entry's in the hashmap.
|
191
|
+
def map_size(key)
|
192
|
+
size = 0
|
193
|
+
self.query("MSIZE #{key}") {|result|
|
194
|
+
size = result.data if result.success?
|
195
|
+
}
|
196
|
+
size
|
197
|
+
end
|
198
|
+
|
199
|
+
# Delete a number of keys from a hashmap.
|
200
|
+
# @param [String] key Hashmap to delete from.
|
201
|
+
# @param [String] args List of keys to delete.
|
202
|
+
# @return [Fixnum] Number of keys deleted.
|
203
|
+
#
|
204
|
+
# map_delete('test-map', 'key1', 'key2', 'key3') will
|
205
|
+
# attempt to delete the keys key1, key2 and key3 from the
|
206
|
+
# hashmap stored at 'test-map'.
|
207
|
+
def map_delete(key, *args)
|
208
|
+
num = 0
|
209
|
+
hkeys = args.join ' '
|
210
|
+
self.query("MDEL #{key} #{hkeys}") {|result|
|
211
|
+
num = result.data if result.success?
|
212
|
+
}
|
213
|
+
num
|
214
|
+
end
|
215
|
+
|
216
|
+
# Check if a key is included in a set.
|
217
|
+
# @param [String] key Set to look into.
|
218
|
+
# @param [String] set_key The set will be checked for this key.
|
219
|
+
# @return [Boolean] True if set_key exists, false otherwise.
|
220
|
+
def set_include?(key, set_key)
|
221
|
+
included = false
|
222
|
+
self.query("SINCLUDE #{key} \"#{set_key}\"") {|result|
|
223
|
+
included = result.data if result.success?
|
224
|
+
}
|
225
|
+
included
|
226
|
+
end
|
227
|
+
|
228
|
+
# Add one or more keys to a set.
|
229
|
+
# @param [String] key Set to add the keys to.
|
230
|
+
# @param [String] args Keys which have to be added.
|
231
|
+
# @return [Fixnum] Number of keys added.
|
232
|
+
# @example set_add
|
233
|
+
# set_add('test-set', 'set key 1', 'set key 2', 'set key 3')
|
234
|
+
def set_add(key, *args)
|
235
|
+
args = array_add_quotes(args)
|
236
|
+
keys = args.join ' '
|
237
|
+
num = 0
|
238
|
+
self.query("SADD #{key} #{keys}") {|result|
|
239
|
+
num = result.data if result.success?
|
240
|
+
}
|
241
|
+
num
|
242
|
+
end
|
243
|
+
|
244
|
+
# Delete one or more keys from a set.
|
245
|
+
# @param [String] key Set to delete from.
|
246
|
+
# @param [String] args Keys to delete from the set.
|
247
|
+
# @return [Fixnum] Number of keys deleted.
|
248
|
+
def set_delete(key, *args)
|
249
|
+
args = array_add_quotes(args)
|
250
|
+
keys = args.join ' '
|
251
|
+
num = 0
|
252
|
+
self.query("SDEL #{key} #{keys}") {|result|
|
253
|
+
num = result.data if result.success?
|
254
|
+
}
|
255
|
+
num
|
256
|
+
end
|
257
|
+
|
258
|
+
# Clear out an entire set.
|
259
|
+
# @param [String] key Set to delete.
|
260
|
+
# @return [Boolean] True on success, false otherwise.
|
261
|
+
def set_clear(key)
|
262
|
+
self.delete(key)
|
263
|
+
end
|
264
|
+
|
265
|
+
# Add data to a list.
|
266
|
+
# @param [String] key List to push into.
|
267
|
+
# @param [String] data Data to push into the list.
|
268
|
+
# @return [Boolean] True on success, false otherwise.
|
269
|
+
def list_push(key, data)
|
270
|
+
success = false
|
271
|
+
self.query("LPUSH #{key} \"#{data}\"") {|result|
|
272
|
+
success = result.success?
|
273
|
+
}
|
274
|
+
success
|
275
|
+
end
|
276
|
+
|
277
|
+
# Reference a list by index or range.
|
278
|
+
# @param [String] key List to reference.
|
279
|
+
# @param [String] idx Index or range.
|
280
|
+
# @return [Array] Array of the results.
|
281
|
+
#
|
282
|
+
# @example by index
|
283
|
+
# list_ref('test-list', 1)
|
284
|
+
# @example by range
|
285
|
+
# list_ref('test-list', '0..-1')
|
286
|
+
def list_ref(key, idx)
|
287
|
+
ary = Array.new
|
288
|
+
self.query("LREF #{key} #{idx}") {|result|
|
289
|
+
if result.success?
|
290
|
+
ary.push result.data
|
291
|
+
else
|
292
|
+
ary.push nil
|
293
|
+
end
|
294
|
+
}
|
295
|
+
ary
|
296
|
+
end
|
297
|
+
|
298
|
+
# Pop elements from a list by index or range.
|
299
|
+
# @param [String] key List to reference.
|
300
|
+
# @param [String] idx Index or range.
|
301
|
+
# @return [Array] Array of the results.
|
302
|
+
#
|
303
|
+
# @example by index
|
304
|
+
# list_pop('test-list', 1)
|
305
|
+
# @example by range
|
306
|
+
# list_pop('test-list', '0..-1')
|
307
|
+
def list_pop(key, idx)
|
308
|
+
ary = Array.new
|
309
|
+
self.query("LPOP #{key} #{idx}") {|result|
|
310
|
+
if result.success?
|
311
|
+
ary.push result.data
|
312
|
+
else
|
313
|
+
ary.push nil
|
314
|
+
end
|
315
|
+
}
|
316
|
+
ary
|
317
|
+
end
|
318
|
+
|
319
|
+
# Set the data in a list at a specific index.
|
320
|
+
# @param [String] key List to reference.
|
321
|
+
# @param [Fixnum] idx Index to edit.
|
322
|
+
# @param [String] data Data to set.
|
323
|
+
# @note The index has to exist before you are able to use list_set on it.
|
324
|
+
def list_set(key, idx, data)
|
325
|
+
success = false
|
326
|
+
self.query("LSET #{key} #{idx} \"#{data}\"") {|result|
|
327
|
+
success = result.success?
|
328
|
+
}
|
329
|
+
success
|
330
|
+
end
|
331
|
+
|
332
|
+
# Get the size of a list (number of elements).
|
333
|
+
# @param [String] key List to get the size of.
|
334
|
+
# @return [Fixnum] Number of elements in the list.
|
335
|
+
def list_size(key)
|
336
|
+
num = 0
|
337
|
+
self.query("LSIZE #{key}") {|result|
|
338
|
+
num = result.data if result.success?
|
339
|
+
}
|
340
|
+
num
|
341
|
+
end
|
342
|
+
|
343
|
+
# Clear out an entire list.
|
344
|
+
# @param [String] key List to delete.
|
345
|
+
# @return [Boolean] True on success, false otherwise.
|
346
|
+
def list_clear(key)
|
347
|
+
self.delete(key)
|
348
|
+
end
|
349
|
+
|
350
|
+
private
|
351
|
+
def array_add_quotes(ary)
|
352
|
+
return unless ary.kind_of? Array
|
353
|
+
ary.collect! {|element|
|
354
|
+
"\"#{element}\""
|
355
|
+
}
|
356
|
+
ary
|
357
|
+
end
|
105
358
|
end
|
106
359
|
end
|
107
360
|
|
data/lib/xfiredb/result.rb
CHANGED
data/lib/xfiredb/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xfiredb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michel Megens
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03-
|
11
|
+
date: 2016-03-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|