orient_db_client 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -36,17 +36,13 @@ module OrientDbClient
36
36
  when 'java.lang.IndexOutOfBoundsException', 'java.lang.IllegalArgumentException'
37
37
  result = false
38
38
  else
39
- throw err
39
+ raise err
40
40
  end
41
41
  end
42
42
 
43
43
  result
44
44
  end
45
45
 
46
- def command(session, text, options = {})
47
- @protocol.command(@socket, session, text, options)
48
- end
49
-
50
46
  def count(session, cluster_name)
51
47
  @protocol.count(@socket, session, cluster_name)
52
48
  end
@@ -123,6 +119,14 @@ module OrientDbClient
123
119
  @sessions[session] = DatabaseSession.new(message_content[:session], self, message_content[:clusters])
124
120
  end
125
121
 
122
+ def query(session, text, options = {})
123
+ options[:query_class_name] = :query
124
+
125
+ result = @protocol.command(@socket, session, text, options)
126
+
127
+ result[:message_content]
128
+ end
129
+
126
130
  def reload(session)
127
131
  result = @protocol.db_reload(@socket, session)
128
132
  clusters = result[:message_content][:clusters]
@@ -18,10 +18,6 @@ module OrientDbClient
18
18
  @connection.cluster_exists?(@id, cluster_id)
19
19
  end
20
20
 
21
- def command(text, options = {})
22
- @connection.command(@id, text, options)
23
- end
24
-
25
21
  def count(cluster_name)
26
22
  @connection.count(@id, cluster_name)
27
23
  end
@@ -45,12 +41,12 @@ module OrientDbClient
45
41
  end
46
42
 
47
43
  def delete_record(rid_or_cluster_id, cluster_position_or_version, version = nil)
48
- if rid_or_cluster_id.is_a?(Fixnum)
49
- rid = OrientDbClient::Rid.new(rid_or_cluster_id, cluster_position)
50
- version = version
51
- else
44
+ if rid_or_cluster_id.is_a?(OrientDbClient::Rid)
52
45
  rid = rid_or_cluster_id
53
- version = cluster_position_or_version
46
+ version = cluster_position_or_version.to_i
47
+ else
48
+ rid = OrientDbClient::Rid.new(rid_or_cluster_id.to_i, cluster_position_or_version.to_i)
49
+ version = version
54
50
  end
55
51
 
56
52
  @connection.delete_record(@id, rid, version)
@@ -76,13 +72,17 @@ module OrientDbClient
76
72
  @connection.load_record(@id, rid_or_cluster_id)[:message_content]
77
73
  end
78
74
 
75
+ def query(text, options = {})
76
+ @connection.query(@id, text, options)
77
+ end
78
+
79
79
  def reload
80
80
  @connection.reload(@id)
81
81
  end
82
82
 
83
- def update_record(record, rid_or_cluster_id, cluster_position_or_version, version = nil)
83
+ def update_record(record, rid_or_cluster_id, cluster_position_or_version, version = :none)
84
84
  if rid_or_cluster_id.is_a?(Fixnum)
85
- rid = OrientDbClient::Rid.new(rid_or_cluster_id, cluster_position)
85
+ rid = OrientDbClient::Rid.new(rid_or_cluster_id, cluster_position_or_version)
86
86
  version = version
87
87
  else
88
88
  rid = rid_or_cluster_id
@@ -66,15 +66,26 @@ module OrientDbClient
66
66
  DRIVER_NAME = 'OrientDB Ruby Client'.freeze
67
67
  DRIVER_VERSION = OrientDbClient::VERSION
68
68
 
69
+ COMMAND_CLASS = 'com.orientechnologies.orient.core.sql.OCommandSQL'.freeze
70
+ QUERY_CLASS = 'com.orientechnologies.orient.core.sql.query.OSQLSynchQuery'.freeze
71
+
69
72
  NEW_SESSION = -1
70
73
 
71
74
  def self.command(socket, session, command, options = {})
72
75
  options = {
73
76
  :async => false, # Async mode is not supported yet
74
- :query_class_name => 'com.orientechnologies.orient.core.sql.query.OSQLSynchQuery',
77
+ :query_class_name => QUERY_CLASS,
75
78
  :limit => -1
76
79
  }.merge(options);
77
80
 
81
+ if options[:query_class_name].is_a?(Symbol)
82
+ options[:query_class_name] = case options[:query_class_name]
83
+ when :query then QUERY_CLASS
84
+ when :command then COMMAND_CLASS
85
+ else raise "Unsupported command class: #{options[:query_class_name]}"
86
+ end
87
+ end
88
+
78
89
  serialized_command = NetworkMessage.new { |m|
79
90
  m.add :string, options[:query_class_name]
80
91
  m.add :string, command
@@ -408,7 +419,7 @@ module OrientDbClient
408
419
  :record_version => read_integer(socket),
409
420
  :bytes => read_string(socket) })
410
421
  else
411
- throw "Unsupported record format: #{record[:format]}"
422
+ raise "Unsupported record format: #{record[:format]}"
412
423
  end
413
424
  end
414
425
 
@@ -424,7 +435,7 @@ module OrientDbClient
424
435
  result.concat collection
425
436
  break
426
437
  else
427
- throw "Unsupported payload status: #{status}"
438
+ raise "Unsupported payload status: #{status}"
428
439
  end
429
440
  end
430
441
 
@@ -519,10 +530,10 @@ module OrientDbClient
519
530
  result = result || record
520
531
  result[:document] = deserializer.deserialize(record[:bytes])[:document]
521
532
  else
522
- throw "Unsupported record type: #{record[:record_type]}"
533
+ raise "Unsupported record type: #{record[:record_type]}"
523
534
  end
524
535
  else
525
- throw "Unsupported payload status: #{status}"
536
+ raise "Unsupported payload status: #{status}"
526
537
  end
527
538
  end
528
539
 
@@ -8,9 +8,18 @@ module OrientDbClient
8
8
 
9
9
  def self.command(socket, session, command, options = {})
10
10
  options[:query_class_name].tap do |qcn|
11
+ if qcn.is_a?(Symbol)
12
+ qcn = case qcn
13
+ when :query then 'q'
14
+ when :command then 'c'
15
+ end
16
+ end
17
+
11
18
  if qcn.nil? || qcn == 'com.orientechnologies.orient.core.sql.query.OSQLSynchQuery'
12
- options[:query_class_name] = 'q'
19
+ qcn = 'q'
13
20
  end
21
+
22
+ options[:query_class_name] = qcn
14
23
  end
15
24
 
16
25
  super socket, session, command, options
@@ -172,11 +172,7 @@ module OrientDbClient
172
172
  if value.is_a?(OrientDbClient::Rid)
173
173
  serialize_rid(value)
174
174
  elsif value.is_a?(String)
175
- if value.encoding.equal?(binary_encoding)
176
- serialize_binary(value)
177
- else
178
- serialize_string(value)
179
- end
175
+ serialize_string(value)
180
176
  elsif value.is_a?(Fixnum)
181
177
  serialize_integer(value)
182
178
  elsif value.is_a?(TrueClass)
@@ -1,3 +1,3 @@
1
1
  module OrientDbClient
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -6,7 +6,8 @@ require "socket"
6
6
 
7
7
  module OrientDbClient
8
8
  def connect(host, options = {})
9
- options = { port: 2424 }.merge(options)
9
+ options[:port] = options[:port].to_i
10
+ options[:port] = 2424 if options[:port] == 0
10
11
 
11
12
  s = TCPSocket.open(host, options[:port])
12
13
 
@@ -26,8 +26,8 @@ class TestDatabaseSession < MiniTest::Unit::TestCase
26
26
  refute @connection.closed?
27
27
  end
28
28
 
29
- def test_command
30
- result = @session.command("SELECT FROM OUser")
29
+ def test_query
30
+ result = @session.query("SELECT FROM OUser")
31
31
 
32
32
  assert_equal @session.id, result[:session]
33
33
 
@@ -52,30 +52,26 @@ class TestDatabaseSession < MiniTest::Unit::TestCase
52
52
  refute @session.cluster_exists?("OTest")
53
53
  end
54
54
 
55
- def test_command
56
- result = @session.command("SELECT FROM OUser")
55
+ def test_query
56
+ result = @session.query("SELECT FROM OUser")
57
57
 
58
- assert_equal @session.id, result[:session]
58
+ assert_equal 3, result.length
59
+
60
+ result[0].tap do |record|
61
+ assert_equal 0, record[:format]
62
+ assert_equal 4, record[:cluster_id]
63
+ assert_equal 0, record[:cluster_position]
64
+
65
+ record[:document].tap do |doc|
66
+ assert_equal 'admin', doc['name']
67
+ assert_equal 'ACTIVE', doc['status']
68
+
69
+ doc['roles'].tap do |roles|
70
+ assert roles.is_a?(Array), "expected Array, but got #{roles.class}"
59
71
 
60
- result[:message_content].tap do |content|
61
- assert_equal 3, content.length
62
-
63
- content[0].tap do |record|
64
- assert_equal 0, record[:format]
65
- assert_equal 4, record[:cluster_id]
66
- assert_equal 0, record[:cluster_position]
67
-
68
- record[:document].tap do |doc|
69
- assert_equal 'admin', doc['name']
70
- assert_equal 'ACTIVE', doc['status']
71
-
72
- doc['roles'].tap do |roles|
73
- assert roles.is_a?(Array), "expected Array, but got #{roles.class}"
74
-
75
- assert roles[0].is_a?(OrientDbClient::Rid)
76
- assert_equal 3, roles[0].cluster_id
77
- assert_equal 0, roles[0].cluster_position
78
- end
72
+ assert roles[0].is_a?(OrientDbClient::Rid)
73
+ assert_equal 3, roles[0].cluster_id
74
+ assert_equal 0, roles[0].cluster_position
79
75
  end
80
76
  end
81
77
  end
@@ -28,7 +28,6 @@ class TestSerializer7 < MiniTest::Unit::TestCase
28
28
  'time' => :time
29
29
  },
30
30
  :document => {
31
- 'implicit_binary' => "Binary data".encode("ASCII-8BIT"),
32
31
  'implicit_boolean_true' => true,
33
32
  'implicit_boolean_false' => false,
34
33
  'implicit_collection' => [ 3, 7, 14 ],
@@ -63,7 +62,7 @@ class TestSerializer7 < MiniTest::Unit::TestCase
63
62
  }
64
63
  }
65
64
 
66
- expected_result = %Q{OClass@implicit_binary:_QmluYXJ5IGRhdGE=_,implicit_boolean_true:true,implicit_boolean_false:false,implicit_collection:[3,7,14],implicit_date:1333425600a,implicit_document:(sym_key:\"embedded doc string\"),implicit_double:6.6236d,implicit_integer:15,implicit_long:7345723467317884556l,implicit_map:{\"key1\":\"value1\",\"key2\":\"value2\"},implicit_time:1296279468t,implicit_string:\"a string\",buffer:_RXhwbGljaXQgYmluYXJ5IGRhdGE=_,true:true,false:false,byte:97b,array:[\"Test\",\"Test3\",6,2,#5:1],date_from_time:1339560000a,date_from_string:1339560000a,doc:(integer:735),float:5.6234f,double:2.67234235d,bignum:1l,bigdec:6.2724522625234c,map:{\"key1\":\"Value 1\",\"key_2\":\"Value 2\",\"key_3\":6234},rid:#3:2,short:5s,time:1327417259t,implicit_embedded_documents:[(null_rid:#),(short:16134s)]}
65
+ expected_result = %Q{OClass@implicit_boolean_true:true,implicit_boolean_false:false,implicit_collection:[3,7,14],implicit_date:1333425600a,implicit_document:(sym_key:\"embedded doc string\"),implicit_double:6.6236d,implicit_integer:15,implicit_long:7345723467317884556l,implicit_map:{\"key1\":\"value1\",\"key2\":\"value2\"},implicit_time:1296279468t,implicit_string:\"a string\",buffer:_RXhwbGljaXQgYmluYXJ5IGRhdGE=_,true:true,false:false,byte:97b,array:[\"Test\",\"Test3\",6,2,#5:1],date_from_time:1339560000a,date_from_string:1339560000a,doc:(integer:735),float:5.6234f,double:2.67234235d,bignum:1l,bigdec:6.2724522625234c,map:{\"key1\":\"Value 1\",\"key_2\":\"Value 2\",\"key_3\":6234},rid:#3:2,short:5s,time:1327417259t,implicit_embedded_documents:[(null_rid:#),(short:16134s)]}
67
66
 
68
67
  result = @serializer.serialize(record)
69
68
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: orient_db_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-04 00:00:00.000000000 Z
12
+ date: 2012-04-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: minitest
@@ -123,18 +123,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
123
123
  - - ! '>='
124
124
  - !ruby/object:Gem::Version
125
125
  version: '0'
126
- segments:
127
- - 0
128
- hash: -4489046239481477100
129
126
  required_rubygems_version: !ruby/object:Gem::Requirement
130
127
  none: false
131
128
  requirements:
132
129
  - - ! '>='
133
130
  - !ruby/object:Gem::Version
134
131
  version: '0'
135
- segments:
136
- - 0
137
- hash: -4489046239481477100
138
132
  requirements: []
139
133
  rubyforge_project: orient_db_client
140
134
  rubygems_version: 1.8.21