jylis-rb 0.0.1 → 0.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/README.md +221 -0
- data/doc/Jylis.html +1087 -6
- data/doc/Jylis/Connection.html +1128 -0
- data/doc/Jylis/Connection/HostMissingError.html +135 -0
- data/doc/Jylis/Connection/UnsupportedSchemaError.html +135 -0
- data/doc/Jylis/DataType.html +135 -0
- data/doc/Jylis/DataType/Base.html +346 -0
- data/doc/Jylis/DataType/GCOUNT.html +331 -0
- data/doc/Jylis/DataType/GCOUNT/Result.html +132 -0
- data/doc/Jylis/DataType/MVREG.html +318 -0
- data/doc/Jylis/DataType/PNCOUNT.html +404 -0
- data/doc/Jylis/DataType/TLOG.html +750 -0
- data/doc/Jylis/DataType/TLOG/Result.html +640 -0
- data/doc/Jylis/DataType/TLOG/Row.html +616 -0
- data/doc/Jylis/DataType/TREG.html +345 -0
- data/doc/Jylis/DataType/TREG/Result.html +616 -0
- data/doc/Jylis/DataType/UJSON.html +549 -0
- data/doc/_index.html +185 -4
- data/doc/class_list.html +1 -1
- data/doc/file.README.html +223 -3
- data/doc/file.license.html +3 -3
- data/doc/frames.html +1 -1
- data/doc/index.html +223 -3
- data/doc/method_list.html +512 -0
- data/doc/top-level-namespace.html +3 -3
- data/lib/jylis-rb.rb +9 -0
- data/lib/jylis-rb/connection.rb +121 -0
- data/lib/jylis-rb/data_types/base.rb +24 -0
- data/lib/jylis-rb/data_types/gcount.rb +24 -0
- data/lib/jylis-rb/data_types/mvreg.rb +23 -0
- data/lib/jylis-rb/data_types/pncount.rb +33 -0
- data/lib/jylis-rb/data_types/tlog.rb +157 -0
- data/lib/jylis-rb/data_types/treg.rb +57 -0
- data/lib/jylis-rb/data_types/ujson.rb +87 -0
- data/lib/jylis-rb/jylis.rb +106 -0
- data/lib/jylis-rb/version.rb +1 -1
- metadata +39 -2
@@ -0,0 +1,87 @@
|
|
1
|
+
require "oj"
|
2
|
+
|
3
|
+
Oj.default_options = {mode: :compat}
|
4
|
+
|
5
|
+
class Jylis
|
6
|
+
module DataType
|
7
|
+
# Unordered JSON.
|
8
|
+
#
|
9
|
+
# @see https://jemc.github.io/jylis/docs/types/ujson/
|
10
|
+
class UJSON < Base
|
11
|
+
# Get the JSON representation of the data currently held at `key`.
|
12
|
+
def get(*keys)
|
13
|
+
unless keys.count >= 1
|
14
|
+
raise ArgumentError.new("Must provide at least one key")
|
15
|
+
end
|
16
|
+
|
17
|
+
params = ["UJSON", "GET"] + keys
|
18
|
+
|
19
|
+
result = connection.query(*params)
|
20
|
+
|
21
|
+
result == "" ? result : Oj.load(result)
|
22
|
+
end
|
23
|
+
|
24
|
+
# Store the given `ujson` data at the given `key`.
|
25
|
+
#
|
26
|
+
# @overload set(*keys, value)
|
27
|
+
def set(*args)
|
28
|
+
key_value_query(__method__, *args)
|
29
|
+
end
|
30
|
+
|
31
|
+
# Remove all data stored at or under the given `key`.
|
32
|
+
def clr(*keys)
|
33
|
+
unless keys.count >= 1
|
34
|
+
raise ArgumentError.new("Must provide at least one key")
|
35
|
+
end
|
36
|
+
|
37
|
+
params = ["UJSON", "CLR"] + keys
|
38
|
+
|
39
|
+
result = connection.query(*params)
|
40
|
+
|
41
|
+
unless result == "OK"
|
42
|
+
raise "Failed: UJSON CLR #{params.join(' ')}"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# Insert the given `value` as a new element in the set of values stored
|
47
|
+
# at `key`.
|
48
|
+
#
|
49
|
+
# @overload ins(*keys, value)
|
50
|
+
def ins(*args)
|
51
|
+
key_value_query(__method__, *args)
|
52
|
+
end
|
53
|
+
|
54
|
+
# Remove the specified `value` from the set of values stored at `key`.
|
55
|
+
#
|
56
|
+
# @overload rm(*keys, value)
|
57
|
+
def rm(*args)
|
58
|
+
key_value_query(__method__, *args)
|
59
|
+
end
|
60
|
+
|
61
|
+
private
|
62
|
+
|
63
|
+
# Execute a query consisting of (*keys, value) that returns "OK" on success.
|
64
|
+
#
|
65
|
+
# @param function [String, Symbol] the Jylis function name
|
66
|
+
# @param args [Array] the list of keys, with the value last
|
67
|
+
def key_value_query(function, *args)
|
68
|
+
unless args.count >= 2
|
69
|
+
raise ArgumentError.new("Must provide at least one key and the value")
|
70
|
+
end
|
71
|
+
|
72
|
+
function = function.to_s.upcase
|
73
|
+
value = args.pop
|
74
|
+
keys = args
|
75
|
+
|
76
|
+
params = ["UJSON", function] + keys
|
77
|
+
params.push Oj.dump(value)
|
78
|
+
|
79
|
+
result = connection.query(*params)
|
80
|
+
|
81
|
+
unless result == "OK"
|
82
|
+
raise "Failed: UJSON #{function} #{params.join(' ')}"
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
data/lib/jylis-rb/jylis.rb
CHANGED
@@ -1,5 +1,111 @@
|
|
1
1
|
require_relative "version" # Version reopens this class.
|
2
|
+
require_relative "connection"
|
2
3
|
|
3
4
|
# Jylis database adapter.
|
4
5
|
class Jylis
|
6
|
+
private_class_method :new
|
7
|
+
|
8
|
+
class << self
|
9
|
+
# The current connection.
|
10
|
+
attr_accessor :current
|
11
|
+
|
12
|
+
# Connect to a server and store the current connection.
|
13
|
+
#
|
14
|
+
# @param server_uri [URI, String] uri of the server to connect to
|
15
|
+
#
|
16
|
+
# @return [Jylis::Connection] connection
|
17
|
+
def connect(server_uri)
|
18
|
+
disconnect if current && current.connected?
|
19
|
+
|
20
|
+
self.current = Jylis::Connection.new(server_uri)
|
21
|
+
end
|
22
|
+
|
23
|
+
# @return [Boolean] true if a connection to the current server is established
|
24
|
+
# @see Jylis::Connection#connected?
|
25
|
+
def connected?
|
26
|
+
current.connected?
|
27
|
+
end
|
28
|
+
|
29
|
+
# Reconnect to the current server.
|
30
|
+
# @see Jylis::Connection#reconnect
|
31
|
+
def reconnect
|
32
|
+
current.reconnect
|
33
|
+
end
|
34
|
+
|
35
|
+
# Disconnect from the current server.
|
36
|
+
# @see Jylis::Connection#disconnect
|
37
|
+
def disconnect
|
38
|
+
current.disconnect
|
39
|
+
end
|
40
|
+
|
41
|
+
# Make a query to the database.
|
42
|
+
#
|
43
|
+
# @param args data type function args. Can be an args list or array.
|
44
|
+
#
|
45
|
+
# @return [Array] query response
|
46
|
+
#
|
47
|
+
# @see Jylis::Connection#query
|
48
|
+
# @see https://jemc.github.io/jylis/docs/types/
|
49
|
+
def query(*args)
|
50
|
+
current.query(*args)
|
51
|
+
end
|
52
|
+
|
53
|
+
# @!group Data Types
|
54
|
+
|
55
|
+
# TREG functions
|
56
|
+
#
|
57
|
+
# @return [Jylis::DataType::TREG]
|
58
|
+
#
|
59
|
+
# @see Jylis::Connection#treg
|
60
|
+
def treg
|
61
|
+
current.treg
|
62
|
+
end
|
63
|
+
|
64
|
+
# TLOG functions
|
65
|
+
#
|
66
|
+
# @return [Jylis::DataType::TLOG]
|
67
|
+
#
|
68
|
+
# @see Jylis::Connection#tlog
|
69
|
+
def tlog
|
70
|
+
current.tlog
|
71
|
+
end
|
72
|
+
|
73
|
+
# GCOUNT functions
|
74
|
+
#
|
75
|
+
# @return [Jylis::DataType::GCOUNT]
|
76
|
+
#
|
77
|
+
# @see Jylis::Connection#gcount
|
78
|
+
def gcount
|
79
|
+
current.gcount
|
80
|
+
end
|
81
|
+
|
82
|
+
# PNCOUNT functions
|
83
|
+
#
|
84
|
+
# @return [Jylis::DataType::PNCOUNT]
|
85
|
+
#
|
86
|
+
# @see Jylis::Connection#pncount
|
87
|
+
def pncount
|
88
|
+
current.pncount
|
89
|
+
end
|
90
|
+
|
91
|
+
# MVREG functions
|
92
|
+
#
|
93
|
+
# @return [Jylis::DataType::MVREG]
|
94
|
+
#
|
95
|
+
# @see Jylis::Connection#mvreg
|
96
|
+
def mvreg
|
97
|
+
current.mvreg
|
98
|
+
end
|
99
|
+
|
100
|
+
# UJSON functions
|
101
|
+
#
|
102
|
+
# @return [Jylis::DataType::UJSON]
|
103
|
+
#
|
104
|
+
# @see Jylis::Connection#ujson
|
105
|
+
def ujson
|
106
|
+
current.ujson
|
107
|
+
end
|
108
|
+
|
109
|
+
# @!endgroup
|
110
|
+
end
|
5
111
|
end
|
data/lib/jylis-rb/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jylis-rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex McLain
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-06-
|
11
|
+
date: 2018-06-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hiredis
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.6.1
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: oj
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.6'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.6'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rake
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -123,6 +137,21 @@ extra_rdoc_files: []
|
|
123
137
|
files:
|
124
138
|
- README.md
|
125
139
|
- doc/Jylis.html
|
140
|
+
- doc/Jylis/Connection.html
|
141
|
+
- doc/Jylis/Connection/HostMissingError.html
|
142
|
+
- doc/Jylis/Connection/UnsupportedSchemaError.html
|
143
|
+
- doc/Jylis/DataType.html
|
144
|
+
- doc/Jylis/DataType/Base.html
|
145
|
+
- doc/Jylis/DataType/GCOUNT.html
|
146
|
+
- doc/Jylis/DataType/GCOUNT/Result.html
|
147
|
+
- doc/Jylis/DataType/MVREG.html
|
148
|
+
- doc/Jylis/DataType/PNCOUNT.html
|
149
|
+
- doc/Jylis/DataType/TLOG.html
|
150
|
+
- doc/Jylis/DataType/TLOG/Result.html
|
151
|
+
- doc/Jylis/DataType/TLOG/Row.html
|
152
|
+
- doc/Jylis/DataType/TREG.html
|
153
|
+
- doc/Jylis/DataType/TREG/Result.html
|
154
|
+
- doc/Jylis/DataType/UJSON.html
|
126
155
|
- doc/_index.html
|
127
156
|
- doc/class_list.html
|
128
157
|
- doc/css/common.css
|
@@ -139,6 +168,14 @@ files:
|
|
139
168
|
- doc/method_list.html
|
140
169
|
- doc/top-level-namespace.html
|
141
170
|
- lib/jylis-rb.rb
|
171
|
+
- lib/jylis-rb/connection.rb
|
172
|
+
- lib/jylis-rb/data_types/base.rb
|
173
|
+
- lib/jylis-rb/data_types/gcount.rb
|
174
|
+
- lib/jylis-rb/data_types/mvreg.rb
|
175
|
+
- lib/jylis-rb/data_types/pncount.rb
|
176
|
+
- lib/jylis-rb/data_types/tlog.rb
|
177
|
+
- lib/jylis-rb/data_types/treg.rb
|
178
|
+
- lib/jylis-rb/data_types/ujson.rb
|
142
179
|
- lib/jylis-rb/jylis.rb
|
143
180
|
- lib/jylis-rb/version.rb
|
144
181
|
- license.txt
|