active-orient 0.5 → 0.6

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.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -2
  3. data/README.md +78 -35
  4. data/VERSION +1 -1
  5. data/active-orient.gemspec +4 -4
  6. data/bin/active-orient-console +8 -5
  7. data/config/boot.rb +2 -4
  8. data/config/config.yml +1 -1
  9. data/config/connect.yml +2 -2
  10. data/examples/time_graph.md +162 -0
  11. data/gratefuldeadconcerts.md +94 -0
  12. data/lib/active-orient.rb +4 -2
  13. data/lib/base.rb +53 -20
  14. data/lib/base_properties.rb +2 -3
  15. data/lib/class_utils.rb +3 -4
  16. data/lib/database_utils.rb +14 -5
  17. data/lib/init.rb +11 -1
  18. data/lib/model/edge.rb +12 -10
  19. data/lib/model/model.rb +17 -3
  20. data/lib/model/the_class.rb +60 -40
  21. data/lib/model/the_record.rb +63 -51
  22. data/lib/model/vertex.rb +114 -10
  23. data/lib/orient.rb +24 -33
  24. data/lib/orientdb_private.rb +31 -31
  25. data/lib/other.rb +55 -5
  26. data/lib/rest/change.rb +17 -4
  27. data/lib/rest/create.rb +38 -24
  28. data/lib/rest/delete.rb +3 -2
  29. data/lib/rest/operations.rb +37 -27
  30. data/lib/rest/read.rb +2 -2
  31. data/lib/rest/rest.rb +4 -3
  32. data/lib/support.rb +17 -16
  33. data/linkmap.md +75 -0
  34. data/namespace.md +111 -0
  35. data/rails.md +125 -0
  36. data/rails/activeorient.rb +53 -0
  37. data/{examples/time_graph/config → rails}/config.yml +3 -1
  38. data/{examples/time_graph/config → rails}/connect.yml +2 -2
  39. data/usecase_oo.md +3 -1
  40. metadata +21 -38
  41. data/examples/createTime.rb +0 -91
  42. data/examples/time_graph/Gemfile +0 -21
  43. data/examples/time_graph/Guardfile +0 -26
  44. data/examples/time_graph/README.md +0 -129
  45. data/examples/time_graph/bin/active-orient-console +0 -35
  46. data/examples/time_graph/config/boot.rb +0 -119
  47. data/examples/time_graph/config/init_db.rb +0 -59
  48. data/examples/time_graph/createTime.rb +0 -51
  49. data/examples/time_graph/lib/createTime.rb +0 -82
  50. data/examples/time_graph/model/day_of.rb +0 -3
  51. data/examples/time_graph/model/e.rb +0 -6
  52. data/examples/time_graph/model/edge.rb +0 -53
  53. data/examples/time_graph/model/monat.rb +0 -19
  54. data/examples/time_graph/model/stunde.rb +0 -16
  55. data/examples/time_graph/model/tag.rb +0 -29
  56. data/examples/time_graph/model/time_base.rb +0 -6
  57. data/examples/time_graph/model/time_of.rb +0 -4
  58. data/examples/time_graph/model/v.rb +0 -3
  59. data/examples/time_graph/model/vertex.rb +0 -32
  60. data/examples/time_graph/spec/lib/create_time_spec.rb +0 -50
  61. data/examples/time_graph/spec/rest_helper.rb +0 -37
  62. data/examples/time_graph/spec/spec_helper.rb +0 -46
  63. data/usecase.md +0 -104
data/usecase.md DELETED
@@ -1,104 +0,0 @@
1
- ## Usecase
2
- Below some typical features are summarized by example
3
-
4
- Initialize ActiveOrient by calling »bin/active-orient-console t«.
5
- This connects to the Test-Database, specified in »config/connect.yml«.
6
-
7
- ```bash
8
- topo@gamma:~/activeorient/bin$ ./active-orient-console t
9
- Using test-environment
10
- 30.06.(21:36:09) INFO->OrientDB#Connect:..:Connected to database tempera
11
- ORD points to the REST-Instance
12
- Allocated Classes (Hierarchy)
13
- -----------------------------------
14
- ---
15
- - E
16
- - - V
17
- - - a
18
- - b
19
- - c
20
-
21
- ```
22
- The database is almost empty. "E" and "V" are base classes for Edges and Vertices.
23
- "a,b,c" are Vertex-Classes.
24
- ```ruby
25
- A,B,C = * ORD.create_classes( [ :a, :b, :c ] ){ :v }
26
- ```
27
- creates them with a single statement and assigns them to Ruby-classes "A","B" and "C".
28
-
29
- #### Object Mapping
30
- Lets create a class, put some content in it and perform basic oo-steps.
31
-
32
- Attributes(Properties) do not have to be formaly declared. One can save any Object, which
33
- provides a 'to_orient' method. Base-Classes are supported out of the box.
34
- »update«
35
-
36
- ``` ruby
37
- A = ORD.create_class 'my_a_class'
38
- => ActiveOrient::Model::MyAClass
39
- a = A.create test: 45
40
- a.update set: { a_array: aa= [ 1,4,'r' ] ,
41
- a_hash: { :a => 'b', b: 2 } }
42
- a.to_human
43
- => <MyAClass: a_array: [1, 4, r], a_hash: { a => b , b =>2}, test: 45>
44
-
45
- ```
46
- **Notice** Ruby-Symbols are converted to Strings and masked as ":{symbol}:".
47
-
48
- Attibutes/properties of the Database-Record can be handled as normal ruby objects, ie.
49
-
50
- ``` ruby
51
- a.a_array << "a new element" # changes are updated in the DB, calling »update« is not nesessary
52
- a.a_hash[ :a_new_element ] = "value of the new element" # changes are local, »update« stores them in the DB
53
- a.test += 3
54
- a.test = 567
55
- a.update
56
- ```
57
-
58
- #### Contracts-Example
59
- Assume a Database, which is defined as
60
- ```
61
- ORD.create_classes [ :Industry, :Category, :SubCategory ]
62
- ORD.create_class :OpenInterest, abstract: true
63
- ORD.create_classes { :Contract => [ :Stock, Future, Option, Forex ]}
64
- ORD.create_property Industry.categories linkset
65
- ORD.create_property Category.subcategories linkset
66
- ORD.create_property Category.industry link
67
- ORD.create_property SubCategory.category link
68
- ORD.create_property SubCategory.contracts linkset
69
-
70
- ORD.create_property Contracts.subcategory link
71
- ORD.create_property Contracts.details link
72
- ORD.create_property OpenInterest.contracts linkset
73
-
74
- ```
75
- This defines some conventional relations:
76
-
77
- OpenInterest -> Contract <- Subcategory <- Category <- Industry
78
-
79
- with some oo-Behavior
80
- ```ruby
81
- 2.2.1 :003 > ror.class_hierachie base_class: 'Contracts'
82
- => ["Forexes", "Futures", "Options", "Stocks"]
83
- ```
84
-
85
- then the following ORM-behavior is implemented:
86
- ```ruby
87
- topo@gamma:~/new_hctw$ irb
88
- 2.2.1 :001 > require './config/boot'
89
- Using development-environment
90
- -------------------- initialize -------------------- => true
91
- 2.2.1 :002 > ActiveOrient::Model.orientdb = ror = ActiveOrient::OrientDB.new
92
- => #<ActiveOrient::OrientDB:0x000000046f1a90 @res=#<RestClient::Resource:0x000000046c0af8 @url="http://localhost:2480", @block=nil, @options={:user=>"hctw", :password=>"**"}>, @database="hc_database", @classes=[]>
93
- 2.2.1 :003 > OpenInterest = ror.open_class 'Openinterest'
94
- => ActiveOrient::Model::Openinterest
95
- 2.2.1 :004 > first_open_interest = OpenInterest.first
96
- => #<ActiveOrient::Model::Openinterest:0x0000000443ede8 @metadata={"type"=>"d", "class"=>"Openinterest", "version"=>5, "fieldTypes"=>"fetch_date=t,contracts=z", "cluster"=>13, "record"=>0}, @attributes={"fetch_date"=>"2015-06-02 00:00:00", "contracts"=>["#21:36", "#21:35", "#21:34", "#21:33", "#21:32", "#21:31", "#21:30", "#21:29", "#21:28", "#21:27", "#21:26", "#21:25", "#21:24", "#21:23", "#21:22", "#21:21", "#21:51", "#21:49", "#21:50", "#21:47", "#21:48", "#21:45", "#21:46", "#21:43", "#21:44", "#21:41", "#21:42", "#21:39", "#21:40", "#21:37", "#21:38", "#21:4", "#21:3", "#21:0", "#21:17", "#21:18", "#21:19", "#21:20", "#21:13", "#21:14", "#21:15", "#21:16", "#21:9", "#21:10", "#21:11", "#21:12", "#21:5", "#21:6", "#21:7", "#21:8"], "created_at"=>2015-07-01 15:27:41 +0200, "updated_at"=>2015-07-01 15:27:41 +0200}>
97
- 2.2.1 :005 > first_open_interest.contracts.first.subcategory.category.industry
98
- => #<ActiveOrient::Model::Industries:0x00000004af88f0 @metadata={"type"=>"d", "class"=>"Industries", "version"=>8, "fieldTypes"=>"categories=n", "cluster"=>17, "record"=>1}, @attributes={"categories"=>["#15:13", "#15:4", "#15:1"], "name"=>"Basic Materials", "created_at"=>2015-07-01 15:27:58 +0200, "updated_at"=>2015-07-01 15:27:58 +0200}>
99
-
100
- 2.2.1 :006 > first_open_interest.contracts.first.subcategory.category.industry.name
101
- => "Basic Materials"
102
- ```
103
-
104
-