orientdb-ar 0.0.4-jruby → 0.0.5-jruby
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/Rakefile +2 -1
- data/VERSION +1 -1
- data/bin/orientdbar_console +24 -6
- data/lib/orientdb-ar/attributes.rb +2 -3
- data/lib/orientdb-ar/base.rb +32 -30
- data/lib/orientdb-ar/document_mixin.rb +86 -12
- data/lib/orientdb-ar/embedded.rb +10 -14
- data/lib/orientdb-ar/ext.rb +39 -1
- data/lib/orientdb-ar/relations.rb +20 -54
- data/lib/orientdb-ar/relations/embedds_many.rb +40 -0
- data/lib/orientdb-ar/relations/embedds_one.rb +33 -0
- data/lib/orientdb-ar/relations/links_many.rb +46 -0
- data/lib/orientdb-ar/relations/links_one.rb +41 -0
- data/lib/orientdb-ar/sql/query.rb +6 -0
- data/orientdb-ar.gemspec +20 -12
- data/spec/dirty_spec.rb +25 -28
- data/spec/lint_behavior.rb +2 -2
- data/spec/lint_spec.rb +3 -2
- data/spec/model_spec.rb +207 -77
- data/spec/models/address.rb +3 -0
- data/spec/models/customer.rb +1 -0
- data/spec/models/invoice.rb +12 -0
- data/spec/models/invoice_line.rb +14 -0
- data/spec/models/person.rb +7 -0
- data/spec/models/phone_number.rb +2 -1
- data/spec/models/product.rb +17 -0
- data/spec/serialization_spec.rb +12 -16
- data/spec/spec_helper.rb +44 -15
- metadata +27 -12
- data/lib/orientdb-ar/validations.rb +0 -11
data/spec/models/address.rb
CHANGED
data/spec/models/customer.rb
CHANGED
@@ -0,0 +1,12 @@
|
|
1
|
+
class Invoice < OrientDB::AR::Base
|
2
|
+
|
3
|
+
field :number, :int, :mandatory => true, :index => true
|
4
|
+
links_one Customer, :not_null => true
|
5
|
+
field :sold_on, :date
|
6
|
+
field :total, :float
|
7
|
+
links_many InvoiceLine, :name => :lines
|
8
|
+
|
9
|
+
validates_presence_of :number, :customer
|
10
|
+
|
11
|
+
end
|
12
|
+
Invoice.schema!
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class InvoiceLine < OrientDB::AR::Base
|
2
|
+
|
3
|
+
links_one Product, :not_null => true
|
4
|
+
field :quantity, :int, :not_null => true
|
5
|
+
field :price, :float, :not_null => true
|
6
|
+
|
7
|
+
validates_presence_of :product, :quantity
|
8
|
+
|
9
|
+
def invoice
|
10
|
+
Invoice.where(:lines.contains(:@rid, rid.lit))
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
InvoiceLine.schema!
|
data/spec/models/person.rb
CHANGED
@@ -1,6 +1,13 @@
|
|
1
1
|
class Person < OrientDB::AR::Base
|
2
|
+
|
2
3
|
field :name, :string, :not_null => true
|
3
4
|
field :age, :int
|
4
5
|
field :tags, [:list, :string]
|
6
|
+
|
7
|
+
self.default_validation_group = :all
|
8
|
+
|
9
|
+
validates_presence_of :name, :groups => :all
|
10
|
+
validates_presence_of :age, :groups => [:all, :admins]
|
11
|
+
|
5
12
|
end
|
6
13
|
Person.schema!
|
data/spec/models/phone_number.rb
CHANGED
@@ -0,0 +1,17 @@
|
|
1
|
+
class Product < OrientDB::AR::Base
|
2
|
+
|
3
|
+
field :sku, :string, :not_null => true
|
4
|
+
field :title, :string, :not_null => true
|
5
|
+
field :price, :float, :not_null => true
|
6
|
+
|
7
|
+
validates_presence_of :sku, :title
|
8
|
+
|
9
|
+
def invoice_lines(reload = false)
|
10
|
+
if !defined?(@invoice_lines) || reload
|
11
|
+
@invoice_lines = InvoiceLine.where(:product => rid.lit).all
|
12
|
+
end
|
13
|
+
@invoice_lines
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
Product.schema!
|
data/spec/serialization_spec.rb
CHANGED
@@ -1,23 +1,19 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
2
|
|
3
|
-
describe "ActiveModel" do
|
3
|
+
describe "ActiveModel::Serialization" do
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
@person.to_json.should == %{{"name":null}}
|
12
|
-
@person.to_xml.should == "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<simple-person>\n <name type=\"yaml\" nil=\"true\"></name>\n</simple-person>\n"
|
13
|
-
|
14
|
-
@person.name = "Bob"
|
15
|
-
@person.serializable_hash.should == {"name" => "Bob"}
|
16
|
-
@person.as_json.should == {"name" => "Bob"}
|
17
|
-
@person.to_json.should == %{{"name":"Bob"}}
|
18
|
-
@person.to_xml.should == "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<simple-person>\n <name>Bob</name>\n</simple-person>\n"
|
19
|
-
end
|
5
|
+
it "should comply" do
|
6
|
+
@person = SimplePerson.new
|
7
|
+
@person.serializable_hash.should == { "name" => nil }
|
8
|
+
@person.as_json.should == { "name" => nil }
|
9
|
+
@person.to_json.should == %{{"name":null}}
|
10
|
+
@person.to_xml.should == "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<simple-person>\n <name nil=\"true\"></name>\n</simple-person>\n"
|
20
11
|
|
12
|
+
@person.name = "Bob"
|
13
|
+
@person.serializable_hash.should == { "name" => "Bob" }
|
14
|
+
@person.as_json.should == { "name" => "Bob" }
|
15
|
+
@person.to_json.should == %{{"name":"Bob"}}
|
16
|
+
@person.to_xml.should == "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<simple-person>\n <name>Bob</name>\n</simple-person>\n"
|
21
17
|
end
|
22
18
|
|
23
19
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -15,22 +15,51 @@ unless defined?(SPEC_HELPER_LOADED)
|
|
15
15
|
#require 'rspec/autorun'
|
16
16
|
require 'fileutils'
|
17
17
|
|
18
|
-
|
19
|
-
|
18
|
+
TEST_URL = ENV["ORIENTDB_TEST_URL"]
|
19
|
+
TEST_USERNAME = ENV["ORIENTDB_TEST_USERNAME"] || 'admin'
|
20
|
+
TEST_PASSWORD = ENV["ORIENTDB_TEST_PASSWORD"] || 'admin'
|
21
|
+
TEST_POOLED = ENV["ORIENTDB_TEST_POOLED"].to_s[0, 1].downcase == 't'
|
20
22
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
23
|
+
puts "ENV :: TEST_URL : #{TEST_URL} | TEST_USERNAME : #{TEST_USERNAME} | TEST_PASSWORD : #{TEST_PASSWORD} | TEST_POOLED : #{TEST_POOLED}"
|
24
|
+
|
25
|
+
if TEST_URL
|
26
|
+
if TEST_POOLED
|
27
|
+
puts ">> Testing [#{TEST_URL[0,TEST_URL.index(':')]}] Pooled Database :: TEST_DB URL : #{TEST_URL} : #{TEST_USERNAME} : #{TEST_PASSWORD}"
|
28
|
+
OrientDB::AR::Base.connection = OrientDB::DocumentDatabasePool.connect(TEST_URL, TEST_USERNAME, TEST_PASSWORD)
|
29
|
+
else
|
30
|
+
puts ">> Testing [#{TEST_URL[0,TEST_URL.index(':')]}] Database :: TEST_DB URL : #{TEST_URL} : #{TEST_USERNAME} : #{TEST_PASSWORD}"
|
31
|
+
OrientDB::AR::Base.connection = OrientDB::DocumentDatabase.connect(TEST_URL, TEST_USERNAME, TEST_PASSWORD)
|
32
|
+
end
|
33
|
+
else
|
34
|
+
TEST_DB_PATH = "#{TEMP_DIR}/databases/db_#{rand(999) + 1}"
|
35
|
+
FileUtils.remove_dir "#{TEMP_DIR}/databases" rescue nil
|
36
|
+
FileUtils.mkdir_p TEST_DB_PATH
|
37
|
+
puts ">> Testing [local] Database :: TEST_DB PATH : #{TEST_DB_PATH}"
|
38
|
+
FileUtils.remove_dir "#{TEMP_DIR}/databases/"
|
39
|
+
FileUtils.mkdir_p TEST_DB_PATH
|
40
|
+
puts ">> TEST_DB PATH : #{TEST_DB_PATH}"
|
41
|
+
OrientDB::AR::Base.connection = OrientDB::DocumentDatabase.new("local:#{TEST_DB_PATH}/test").create
|
42
|
+
end
|
43
|
+
|
44
|
+
at_exit do
|
45
|
+
puts " [ EXITING ] ".center(120, "~")
|
46
|
+
begin
|
47
|
+
puts ">> Will close connection ..."
|
48
|
+
pp OrientDB::AR::Base.connection
|
49
|
+
puts ">> Closing ..."
|
50
|
+
OrientDB::AR::Base.connection.close
|
51
|
+
puts ">> Closed ..."
|
52
|
+
rescue Exception => e
|
53
|
+
puts "EXCEPTION: #{e.class.name} : #{e.message}"
|
54
|
+
pp e.backtrace
|
55
|
+
end
|
56
|
+
puts " [ THE END ] ".center(120, "~")
|
57
|
+
exit!
|
58
|
+
end
|
59
|
+
|
60
|
+
%w{ person simple_person address phone_number customer flo_admin product invoice_line invoice }.each do |name|
|
61
|
+
require SPEC_ROOT + '/models/' + name
|
62
|
+
end
|
34
63
|
|
35
64
|
require SPEC_ROOT + '/lint_behavior'
|
36
65
|
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: orientdb-ar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.5
|
6
6
|
platform: jruby
|
7
7
|
authors:
|
8
8
|
- Adrian Madrid
|
@@ -10,8 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date:
|
14
|
-
default_executable: orientdbar_console
|
13
|
+
date: 2012-01-12 00:00:00 Z
|
15
14
|
dependencies:
|
16
15
|
- !ruby/object:Gem::Dependency
|
17
16
|
name: orientdb
|
@@ -19,9 +18,9 @@ dependencies:
|
|
19
18
|
requirement: &id001 !ruby/object:Gem::Requirement
|
20
19
|
none: false
|
21
20
|
requirements:
|
22
|
-
- - "
|
21
|
+
- - ">="
|
23
22
|
- !ruby/object:Gem::Version
|
24
|
-
version: 0.0.
|
23
|
+
version: 0.0.20
|
25
24
|
type: :runtime
|
26
25
|
version_requirements: *id001
|
27
26
|
- !ruby/object:Gem::Dependency
|
@@ -36,27 +35,38 @@ dependencies:
|
|
36
35
|
type: :runtime
|
37
36
|
version_requirements: *id002
|
38
37
|
- !ruby/object:Gem::Dependency
|
39
|
-
name:
|
38
|
+
name: jnunemaker-validatable
|
40
39
|
prerelease: false
|
41
40
|
requirement: &id003 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - "="
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 1.8.4
|
46
|
+
type: :runtime
|
47
|
+
version_requirements: *id003
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: awesome_print
|
50
|
+
prerelease: false
|
51
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
42
52
|
none: false
|
43
53
|
requirements:
|
44
54
|
- - ">="
|
45
55
|
- !ruby/object:Gem::Version
|
46
56
|
version: "0"
|
47
57
|
type: :development
|
48
|
-
version_requirements: *
|
58
|
+
version_requirements: *id004
|
49
59
|
- !ruby/object:Gem::Dependency
|
50
60
|
name: rspec
|
51
61
|
prerelease: false
|
52
|
-
requirement: &
|
62
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
53
63
|
none: false
|
54
64
|
requirements:
|
55
65
|
- - ">="
|
56
66
|
- !ruby/object:Gem::Version
|
57
67
|
version: "2.4"
|
58
68
|
type: :development
|
59
|
-
version_requirements: *
|
69
|
+
version_requirements: *id005
|
60
70
|
description: Active Model wrappers to persist Ruby objects under OrientDB in JRuby.
|
61
71
|
email:
|
62
72
|
- aemadrid@gmail.com
|
@@ -84,12 +94,15 @@ files:
|
|
84
94
|
- lib/orientdb-ar/embedded.rb
|
85
95
|
- lib/orientdb-ar/ext.rb
|
86
96
|
- lib/orientdb-ar/relations.rb
|
97
|
+
- lib/orientdb-ar/relations/embedds_many.rb
|
98
|
+
- lib/orientdb-ar/relations/embedds_one.rb
|
99
|
+
- lib/orientdb-ar/relations/links_many.rb
|
100
|
+
- lib/orientdb-ar/relations/links_one.rb
|
87
101
|
- lib/orientdb-ar/sql.rb
|
88
102
|
- lib/orientdb-ar/sql/delete.rb
|
89
103
|
- lib/orientdb-ar/sql/insert.rb
|
90
104
|
- lib/orientdb-ar/sql/query.rb
|
91
105
|
- lib/orientdb-ar/sql/update.rb
|
92
|
-
- lib/orientdb-ar/validations.rb
|
93
106
|
- orientdb-ar.gemspec
|
94
107
|
- spec/base_spec.rb
|
95
108
|
- spec/dirty_spec.rb
|
@@ -99,13 +112,15 @@ files:
|
|
99
112
|
- spec/models/address.rb
|
100
113
|
- spec/models/customer.rb
|
101
114
|
- spec/models/flo_admin.rb
|
115
|
+
- spec/models/invoice.rb
|
116
|
+
- spec/models/invoice_line.rb
|
102
117
|
- spec/models/person.rb
|
103
118
|
- spec/models/phone_number.rb
|
119
|
+
- spec/models/product.rb
|
104
120
|
- spec/models/simple_person.rb
|
105
121
|
- spec/serialization_spec.rb
|
106
122
|
- spec/spec.opts
|
107
123
|
- spec/spec_helper.rb
|
108
|
-
has_rdoc: true
|
109
124
|
homepage: http://rubygems.org/gems/orientdb
|
110
125
|
licenses: []
|
111
126
|
|
@@ -129,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
129
144
|
requirements: []
|
130
145
|
|
131
146
|
rubyforge_project: orientdb-ar
|
132
|
-
rubygems_version: 1.
|
147
|
+
rubygems_version: 1.8.9
|
133
148
|
signing_key:
|
134
149
|
specification_version: 3
|
135
150
|
summary: ActiveRecord-like persistency through OrientDB in JRuby
|