neo4j 3.0.0.alpha.7 → 3.0.0.alpha.8
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/CHANGELOG +9 -0
- data/lib/neo4j.rb +3 -0
- data/lib/neo4j/active_node.rb +1 -0
- data/lib/neo4j/active_node/has_n.rb +6 -6
- data/lib/neo4j/active_node/has_n/decl_rel.rb +22 -2
- data/lib/neo4j/active_node/has_n/nodes.rb +1 -2
- data/lib/neo4j/active_node/labels.rb +35 -74
- data/lib/neo4j/active_node/orm_adapter.rb +8 -13
- data/lib/neo4j/active_node/persistence.rb +9 -6
- data/lib/neo4j/active_node/property.rb +24 -4
- data/lib/neo4j/active_node/query.rb +54 -0
- data/lib/neo4j/active_node/query/query_proxy.rb +107 -0
- data/lib/neo4j/active_node/quick_query.rb +254 -0
- data/lib/neo4j/active_node/validations.rb +1 -1
- data/lib/neo4j/version.rb +1 -1
- data/neo4j.gemspec +1 -1
- metadata +7 -48
- data/lib/mydb2/active_tx_log +0 -1
- data/lib/mydb2/index/lucene-store.db +0 -0
- data/lib/mydb2/index/lucene.log.1 +0 -0
- data/lib/mydb2/index/lucene.log.active +0 -0
- data/lib/mydb2/index/lucene.log.v0 +0 -0
- data/lib/mydb2/lock +0 -0
- data/lib/mydb2/messages.log +0 -618
- data/lib/mydb2/neostore +0 -0
- data/lib/mydb2/neostore.id +0 -0
- data/lib/mydb2/neostore.labeltokenstore.db +0 -0
- data/lib/mydb2/neostore.labeltokenstore.db.id +0 -0
- data/lib/mydb2/neostore.labeltokenstore.db.names +0 -0
- data/lib/mydb2/neostore.labeltokenstore.db.names.id +0 -0
- data/lib/mydb2/neostore.nodestore.db +0 -0
- data/lib/mydb2/neostore.nodestore.db.id +0 -0
- data/lib/mydb2/neostore.nodestore.db.labels +0 -0
- data/lib/mydb2/neostore.nodestore.db.labels.id +0 -0
- data/lib/mydb2/neostore.propertystore.db +0 -0
- data/lib/mydb2/neostore.propertystore.db.arrays +0 -0
- data/lib/mydb2/neostore.propertystore.db.arrays.id +0 -0
- data/lib/mydb2/neostore.propertystore.db.id +0 -0
- data/lib/mydb2/neostore.propertystore.db.index +0 -0
- data/lib/mydb2/neostore.propertystore.db.index.id +0 -0
- data/lib/mydb2/neostore.propertystore.db.index.keys +0 -0
- data/lib/mydb2/neostore.propertystore.db.index.keys.id +0 -0
- data/lib/mydb2/neostore.propertystore.db.strings +0 -0
- data/lib/mydb2/neostore.propertystore.db.strings.id +0 -0
- data/lib/mydb2/neostore.relationshipstore.db +0 -0
- data/lib/mydb2/neostore.relationshipstore.db.id +0 -0
- data/lib/mydb2/neostore.relationshiptypestore.db +0 -0
- data/lib/mydb2/neostore.relationshiptypestore.db.id +0 -0
- data/lib/mydb2/neostore.relationshiptypestore.db.names +0 -0
- data/lib/mydb2/neostore.relationshiptypestore.db.names.id +0 -0
- data/lib/mydb2/neostore.schemastore.db +0 -0
- data/lib/mydb2/neostore.schemastore.db.id +0 -0
- data/lib/mydb2/nioneo_logical.log.1 +0 -0
- data/lib/mydb2/nioneo_logical.log.active +0 -0
- data/lib/mydb2/nioneo_logical.log.v0 +0 -0
- data/lib/mydb2/schema/label/lucene/segments.gen +0 -0
- data/lib/mydb2/schema/label/lucene/segments_1 +0 -0
- data/lib/mydb2/schema/label/lucene/write.lock +0 -0
- data/lib/mydb2/store_lock +0 -0
- data/lib/mydb2/tm_tx_log.1 +0 -0
- data/lib/neo4j.rb~ +0 -40
@@ -0,0 +1,107 @@
|
|
1
|
+
module Neo4j
|
2
|
+
module ActiveNode
|
3
|
+
module Query
|
4
|
+
|
5
|
+
class QueryProxy
|
6
|
+
include Enumerable
|
7
|
+
|
8
|
+
def initialize(model)
|
9
|
+
@model = model
|
10
|
+
@chain = []
|
11
|
+
end
|
12
|
+
|
13
|
+
def each
|
14
|
+
query_as(:n).pluck(:n).each do |obj|
|
15
|
+
yield obj
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
METHODS = %w[where order skip limit]
|
20
|
+
|
21
|
+
METHODS.each do |method|
|
22
|
+
module_eval(%Q{
|
23
|
+
def #{method}(*args)
|
24
|
+
build_deeper_query_proxy(:#{method}, args)
|
25
|
+
end}, __FILE__, __LINE__)
|
26
|
+
end
|
27
|
+
|
28
|
+
alias_method :offset, :skip
|
29
|
+
alias_method :order_by, :order
|
30
|
+
|
31
|
+
def query_as(var)
|
32
|
+
query = @model.query_as(var).return(var)
|
33
|
+
|
34
|
+
@chain.inject(query) do |query, (method, arg)|
|
35
|
+
if arg.respond_to?(:call)
|
36
|
+
query.send(method, arg.call(var))
|
37
|
+
else
|
38
|
+
query.send(method, arg)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def to_cypher
|
44
|
+
query_as(:n).to_cypher
|
45
|
+
end
|
46
|
+
|
47
|
+
protected
|
48
|
+
|
49
|
+
def add_links(links)
|
50
|
+
@chain += links
|
51
|
+
end
|
52
|
+
|
53
|
+
private
|
54
|
+
|
55
|
+
def build_deeper_query_proxy(method, args)
|
56
|
+
self.dup.tap do |new_query|
|
57
|
+
args.each do |arg|
|
58
|
+
new_query.add_links(links_for_arg(method, arg))
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def links_for_arg(method, arg)
|
64
|
+
method_to_call = "links_for_#{method}_arg"
|
65
|
+
|
66
|
+
default = [[method, arg]]
|
67
|
+
|
68
|
+
self.send(method_to_call, arg) || default
|
69
|
+
rescue NoMethodError
|
70
|
+
default
|
71
|
+
end
|
72
|
+
|
73
|
+
def links_for_where_arg(arg)
|
74
|
+
node_num = 1
|
75
|
+
result = []
|
76
|
+
if arg.is_a?(Hash)
|
77
|
+
arg.map do |key, value|
|
78
|
+
if @model.has_one_relationship?(key)
|
79
|
+
neo_id = value.try(:neo_id) || value
|
80
|
+
raise ArgumentError, "Invalid value for '#{key}' condition" if not neo_id.is_a?(Integer)
|
81
|
+
|
82
|
+
n_string = "n#{node_num}"
|
83
|
+
dir = @model.relationship_dir(key)
|
84
|
+
|
85
|
+
arrow = dir == :outgoing ? '-->' : '<--'
|
86
|
+
result << [:match, ->(v) { "#{v}#{arrow}(#{n_string})" }]
|
87
|
+
result << [:where, ->(v) { {"ID(#{n_string})" => neo_id.to_i} }]
|
88
|
+
node_num += 1
|
89
|
+
else
|
90
|
+
result << [:where, ->(v) { {v => {key => value}}}]
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
result
|
95
|
+
end
|
96
|
+
|
97
|
+
def links_for_order_arg(arg)
|
98
|
+
[[:order, ->(v) { {v => arg} }]]
|
99
|
+
end
|
100
|
+
|
101
|
+
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
@@ -0,0 +1,254 @@
|
|
1
|
+
module Neo4j
|
2
|
+
module ActiveNode
|
3
|
+
# An abstraction layer to quickly build and return objects from the Neo4j Core Query class.
|
4
|
+
# It auto-increments node and relationship identifiers, uses relationships pre-defined in models to create match methods, and automatically maps
|
5
|
+
# results to collections.
|
6
|
+
class QuickQuery
|
7
|
+
attr_reader :quick_query
|
8
|
+
|
9
|
+
# Initialize sets the values of @node_on_deck and defines @rel_on_deck, among other things.
|
10
|
+
# The objects on deck are the objects implicitly modified when calling a method without specifying an identifier.
|
11
|
+
# They are auto-incremented at stages throughout the class.
|
12
|
+
def initialize(caller, as, caller_class = nil)
|
13
|
+
@caller_class = caller_class || caller
|
14
|
+
@node_on_deck = @return_obj = as.to_sym
|
15
|
+
@current_node_index = 2
|
16
|
+
@current_rel_index = 1
|
17
|
+
@rel_on_deck = nil
|
18
|
+
@return_set = false
|
19
|
+
@caller = caller
|
20
|
+
@quick_query = caller.query_as(as)
|
21
|
+
@identifiers = [@node_on_deck]
|
22
|
+
set_rel_methods(@caller_class)
|
23
|
+
return self
|
24
|
+
end
|
25
|
+
|
26
|
+
# sends the #to_cypher method to the core query class
|
27
|
+
def to_cypher
|
28
|
+
@quick_query.return(@return_obj).to_cypher
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
# Creates methods that send cleaned up arguments to the Core Query class
|
33
|
+
# Pass a symbol to specify the target identifier.
|
34
|
+
# Pass a hash to specify match parameters.
|
35
|
+
# Pass a valid cypher string to send directly to Core Query.
|
36
|
+
# If an identifier is not specified, it will apply them to the on-deck node.
|
37
|
+
# @example
|
38
|
+
# Student.qq.where(name: 'chris')
|
39
|
+
# Student.qq.lessons.where(:n2, name: 'history 101')
|
40
|
+
# Student.qq.lessons()
|
41
|
+
CUSTOM_METHODS = %w[where set set_props]
|
42
|
+
|
43
|
+
CUSTOM_METHODS.each do |method|
|
44
|
+
class_eval(%Q{
|
45
|
+
def #{method}(*args)
|
46
|
+
result = prepare(args)
|
47
|
+
final_query(__method__, result)
|
48
|
+
return self
|
49
|
+
end
|
50
|
+
}, __FILE__, __LINE__)
|
51
|
+
end
|
52
|
+
|
53
|
+
|
54
|
+
# Creates methods that send strings directly to Core Query class
|
55
|
+
LITERAL_METHODS = %w[limit skip match offset]
|
56
|
+
|
57
|
+
LITERAL_METHODS.each do |method|
|
58
|
+
class_eval(%Q{
|
59
|
+
def #{method}(s)
|
60
|
+
@quick_query = @quick_query.send(__method__, s)
|
61
|
+
return self
|
62
|
+
end
|
63
|
+
}, __FILE__, __LINE__)
|
64
|
+
end
|
65
|
+
|
66
|
+
# Sends #return to the core query class, does not map to an enumerable.
|
67
|
+
# Assumes the @return_obj if nothing is specified.
|
68
|
+
# if you want distinct, pass boolean true
|
69
|
+
# @example
|
70
|
+
# Student.qq.lessons.return(:n2)
|
71
|
+
# Student.qq.lessons.return(:n2, true)
|
72
|
+
def return(*args)
|
73
|
+
obj_sym = args.select{|el| el.is_a?(Symbol) }.first || @return_obj
|
74
|
+
distinct = args.select{|el| el.is_a?(TrueClass) }.first || false
|
75
|
+
|
76
|
+
r = final_return(obj_sym, distinct)
|
77
|
+
@quick_query = @quick_query.return(r)
|
78
|
+
return self
|
79
|
+
end
|
80
|
+
|
81
|
+
# Returns an enumerable of the query. If return has not been set, will set it to the on_deck node
|
82
|
+
def to_a(distinct = false)
|
83
|
+
@return_set ? result : self.return(distinct).to_a
|
84
|
+
end
|
85
|
+
|
86
|
+
# Same as to_a but with distinct set true
|
87
|
+
def to_a!
|
88
|
+
self.to_a(true)
|
89
|
+
end
|
90
|
+
|
91
|
+
# Set order for return.
|
92
|
+
# @param prop_sym [Symbol] a symbol matching the property on the return class use for order
|
93
|
+
# @param desc_bool [Boolean] boolean to dictate whether to sort descending. Defaults false, use true to descend
|
94
|
+
def order(prop_sym, desc_bool = false)
|
95
|
+
arg = "#{@return_obj}.#{prop_sym.to_s}"
|
96
|
+
end_arg = desc_bool ? arg + ' DESC' : arg
|
97
|
+
@quick_query = @quick_query.order(end_arg)
|
98
|
+
return self
|
99
|
+
end
|
100
|
+
|
101
|
+
private
|
102
|
+
|
103
|
+
def prepare(args)
|
104
|
+
target = args.select{|el| el.is_a?(Symbol) }
|
105
|
+
send_target = target.empty? ? @node_on_deck : target.first
|
106
|
+
result = process_args(args, send_target)
|
107
|
+
end
|
108
|
+
|
109
|
+
def result
|
110
|
+
response = @quick_query.response
|
111
|
+
if response.is_a?(Neo4j::Server::CypherResponse)
|
112
|
+
Neo4j::Session.current.search_result_to_enumerable_first_column(response)
|
113
|
+
else
|
114
|
+
Neo4j::Embedded::ResultWrapper.new(response, @quick_query.to_cypher).map{|x| x[0] }
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
def final_return(return_obj, distinct)
|
119
|
+
@return_set = true
|
120
|
+
distinct ? "distinct #{return_obj.to_s}" : return_obj.to_sym
|
121
|
+
end
|
122
|
+
|
123
|
+
def final_query(method, result)
|
124
|
+
@quick_query = @quick_query.send(method, result)
|
125
|
+
end
|
126
|
+
|
127
|
+
# Creates match methods based on the caller's relationships defined in the model.
|
128
|
+
# It works best when a relationship is defined explicitly with a direction and a receiving/incoming model.
|
129
|
+
# This fires once on initialize, again every time a matcher method is called to build methods for the next step.
|
130
|
+
# The dynamic classes accept the following:
|
131
|
+
# -a symbol to refer to the destination node
|
132
|
+
# -a hash with key :rel_as, value a symbol to act as relationship identifier (otherwise it uses r#{@current_rel_index})
|
133
|
+
# -a hash with key :rel_where containing other hashes of {parameter: value} to specify relationship conditions
|
134
|
+
# -hashes of {parameter: value} that specify conditions for the destination nodes
|
135
|
+
# @example
|
136
|
+
# Student.qq.lessons
|
137
|
+
# Student.qq.lessons(rel_as: :student_status)
|
138
|
+
# Student.qq.lessons(rel_as: :student_status, rel_where: { grade: 'b-' })
|
139
|
+
# Student.qq.lessons(rel_as: :student_status, rel_where: { grade: 'b-' }, :lessinzzz, class: 'history 101').teachers
|
140
|
+
def set_rel_methods(caller_class)
|
141
|
+
caller_class._decl_rels.each { |k,v|
|
142
|
+
if v.target_class.nil?
|
143
|
+
class_eval(%Q{
|
144
|
+
def #{k}(*args)
|
145
|
+
process_rel(args, "#{v.rel_type}")
|
146
|
+
return self
|
147
|
+
end}, __FILE__, __LINE__)
|
148
|
+
else
|
149
|
+
class_eval(%Q{
|
150
|
+
def #{k}(*args)
|
151
|
+
process_rel(args, "#{v.rel_type}", "#{v.target_class.name}")
|
152
|
+
return self
|
153
|
+
end}, __FILE__, __LINE__)
|
154
|
+
end
|
155
|
+
}
|
156
|
+
end
|
157
|
+
|
158
|
+
# Called when a matcher method is called
|
159
|
+
# args are the arguments sent along with the matcher method
|
160
|
+
# rel_type is the defined relationship type
|
161
|
+
# right_label is the label to use for the destination, if available. It's the "right label" cause it's on the right side... get it?
|
162
|
+
# A label can only be used if the model defines the destination class explicitly.
|
163
|
+
def process_rel(args, rel_type, right_label = nil)
|
164
|
+
from_node = @node_on_deck
|
165
|
+
hashes, strings = setup_rel_args(args)
|
166
|
+
set_on_deck(args)
|
167
|
+
|
168
|
+
hashes = process_rel_hashes(hashes) unless hashes.nil?
|
169
|
+
end_args = process_args([hashes] + strings, @node_on_deck) unless hashes.nil? && strings.nil?
|
170
|
+
|
171
|
+
destination = right_label.nil? ? @node_on_deck : "(#{@node_on_deck}:#{right_label})"
|
172
|
+
@quick_query = @quick_query.match("#{from_node}-[#{@rel_on_deck}:`#{rel_type}`]-#{destination}")
|
173
|
+
@quick_query = @quick_query.where(end_args) unless end_args.nil?
|
174
|
+
set_rel_methods(right_label.constantize) unless right_label.nil?
|
175
|
+
|
176
|
+
return self
|
177
|
+
end
|
178
|
+
|
179
|
+
# Prepares arguments passed with the relationship matcher. It finds hashes, which contain properties and values, and strings, which
|
180
|
+
# which literal cypher phrases.
|
181
|
+
def setup_rel_args(args)
|
182
|
+
hashes = args.select{|el| el.is_a?(Hash) }.first
|
183
|
+
strings = args.select{|el| el.is_a?(String) }
|
184
|
+
return hashes, strings
|
185
|
+
end
|
186
|
+
|
187
|
+
# Queues up the new node and relationship. This is only used during process_rel.
|
188
|
+
def set_on_deck(args)
|
189
|
+
@node_on_deck = @return_obj = node_as(args.select{|el| el.is_a?(Symbol) }.first)
|
190
|
+
@rel_on_deck = new_rel_id
|
191
|
+
@identifiers.push([@node_on_deck, @rel_on_deck])
|
192
|
+
end
|
193
|
+
|
194
|
+
# Prepares relationship-specific hashes found during the setup_rel_args method. Removes anything it finds from the hash and sends it back.
|
195
|
+
def process_rel_hashes(hashes)
|
196
|
+
@rel_on_deck = set_rel_as(hashes)
|
197
|
+
@identifiers.push @rel_on_deck
|
198
|
+
|
199
|
+
set_rel_where(hashes)
|
200
|
+
|
201
|
+
hashes.delete_if{|k,v| k == :rel_as || k == :rel_where }
|
202
|
+
end
|
203
|
+
|
204
|
+
# Creates a new node identifier
|
205
|
+
def new_node_id
|
206
|
+
n = "n#{@current_node_index}"
|
207
|
+
@current_node_index += 1
|
208
|
+
return n
|
209
|
+
end
|
210
|
+
|
211
|
+
# Creates a new relationship identifier
|
212
|
+
def new_rel_id
|
213
|
+
r = "r#{@current_rel_index}"
|
214
|
+
@current_rel_index += 1
|
215
|
+
return r
|
216
|
+
end
|
217
|
+
|
218
|
+
def node_as(node_as)
|
219
|
+
node_as.nil? ? new_node_id : node_as.to_sym
|
220
|
+
end
|
221
|
+
|
222
|
+
def set_rel_as(h)
|
223
|
+
h.has_key?(:rel_as) ? h[:rel_as] : new_rel_id
|
224
|
+
end
|
225
|
+
|
226
|
+
def set_rel_where(h)
|
227
|
+
if h.has_key?(:rel_where)
|
228
|
+
@quick_query = @quick_query.where(Hash[@rel_on_deck => h[:rel_where]])
|
229
|
+
end
|
230
|
+
end
|
231
|
+
|
232
|
+
# Utility method used to split up passed values and fix syntax to match Neo4j Core Query class
|
233
|
+
def process_args(args, where_target)
|
234
|
+
end_args = []
|
235
|
+
args.each do |arg|
|
236
|
+
if arg.is_a?(String)
|
237
|
+
end_args.push process_string(arg, where_target)
|
238
|
+
elsif arg.is_a?(Symbol)
|
239
|
+
@node_on_deck = arg
|
240
|
+
@return_obj = arg if @return_obj.nil?
|
241
|
+
elsif arg.is_a?(Hash)
|
242
|
+
end_args.push Hash[where_target => arg] unless arg.empty?
|
243
|
+
end
|
244
|
+
end
|
245
|
+
return end_args
|
246
|
+
end
|
247
|
+
|
248
|
+
# Attempts to determine whether the passed string already contains a node/rel identifier or if it needs one prepended.
|
249
|
+
def process_string(arg, where_target)
|
250
|
+
@identifiers.include?(arg.split('.').first.to_sym) ? arg : "#{where_target}.#{arg}"
|
251
|
+
end
|
252
|
+
end
|
253
|
+
end
|
254
|
+
end
|
@@ -57,7 +57,7 @@ module Neo4j
|
|
57
57
|
|
58
58
|
# prevent that same object is returned
|
59
59
|
# TODO: add negative condtion to not return current record
|
60
|
-
found = record.class.
|
60
|
+
found = record.class.where(conditions).to_a
|
61
61
|
found.delete(record)
|
62
62
|
|
63
63
|
if found.count > 0
|
data/lib/neo4j/version.rb
CHANGED
data/neo4j.gemspec
CHANGED
@@ -33,7 +33,7 @@ It comes included with the Apache Lucene document database.
|
|
33
33
|
s.add_dependency("activemodel", "~> 4")
|
34
34
|
s.add_dependency("railties", "~> 4")
|
35
35
|
s.add_dependency('active_attr', "~> 0.8")
|
36
|
-
s.add_dependency("neo4j-core", "= 3.0.0.alpha.
|
36
|
+
s.add_dependency("neo4j-core", "= 3.0.0.alpha.17")
|
37
37
|
|
38
38
|
if RUBY_PLATFORM =~ /java/
|
39
39
|
s.add_dependency("neo4j-community", '~> 2.0')
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: neo4j
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.0.alpha.
|
4
|
+
version: 3.0.0.alpha.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andreas Ronge
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-07-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: orm_adapter
|
@@ -72,14 +72,14 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - '='
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 3.0.0.alpha.
|
75
|
+
version: 3.0.0.alpha.17
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - '='
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 3.0.0.alpha.
|
82
|
+
version: 3.0.0.alpha.17
|
83
83
|
description: "You can think of Neo4j as a high-performance graph engine with all the
|
84
84
|
features of a mature and robust database.\nThe programmer works with an object-oriented,
|
85
85
|
flexible network structure rather than with strict and static tables \nyet enjoys
|
@@ -99,51 +99,7 @@ files:
|
|
99
99
|
- bin/neo4j-jars
|
100
100
|
- config/locales/en.yml
|
101
101
|
- config/neo4j/config.yml
|
102
|
-
- lib/mydb2/active_tx_log
|
103
|
-
- lib/mydb2/index/lucene-store.db
|
104
|
-
- lib/mydb2/index/lucene.log.1
|
105
|
-
- lib/mydb2/index/lucene.log.active
|
106
|
-
- lib/mydb2/index/lucene.log.v0
|
107
|
-
- lib/mydb2/lock
|
108
|
-
- lib/mydb2/messages.log
|
109
|
-
- lib/mydb2/neostore
|
110
|
-
- lib/mydb2/neostore.id
|
111
|
-
- lib/mydb2/neostore.labeltokenstore.db
|
112
|
-
- lib/mydb2/neostore.labeltokenstore.db.id
|
113
|
-
- lib/mydb2/neostore.labeltokenstore.db.names
|
114
|
-
- lib/mydb2/neostore.labeltokenstore.db.names.id
|
115
|
-
- lib/mydb2/neostore.nodestore.db
|
116
|
-
- lib/mydb2/neostore.nodestore.db.id
|
117
|
-
- lib/mydb2/neostore.nodestore.db.labels
|
118
|
-
- lib/mydb2/neostore.nodestore.db.labels.id
|
119
|
-
- lib/mydb2/neostore.propertystore.db
|
120
|
-
- lib/mydb2/neostore.propertystore.db.arrays
|
121
|
-
- lib/mydb2/neostore.propertystore.db.arrays.id
|
122
|
-
- lib/mydb2/neostore.propertystore.db.id
|
123
|
-
- lib/mydb2/neostore.propertystore.db.index
|
124
|
-
- lib/mydb2/neostore.propertystore.db.index.id
|
125
|
-
- lib/mydb2/neostore.propertystore.db.index.keys
|
126
|
-
- lib/mydb2/neostore.propertystore.db.index.keys.id
|
127
|
-
- lib/mydb2/neostore.propertystore.db.strings
|
128
|
-
- lib/mydb2/neostore.propertystore.db.strings.id
|
129
|
-
- lib/mydb2/neostore.relationshipstore.db
|
130
|
-
- lib/mydb2/neostore.relationshipstore.db.id
|
131
|
-
- lib/mydb2/neostore.relationshiptypestore.db
|
132
|
-
- lib/mydb2/neostore.relationshiptypestore.db.id
|
133
|
-
- lib/mydb2/neostore.relationshiptypestore.db.names
|
134
|
-
- lib/mydb2/neostore.relationshiptypestore.db.names.id
|
135
|
-
- lib/mydb2/neostore.schemastore.db
|
136
|
-
- lib/mydb2/neostore.schemastore.db.id
|
137
|
-
- lib/mydb2/nioneo_logical.log.1
|
138
|
-
- lib/mydb2/nioneo_logical.log.active
|
139
|
-
- lib/mydb2/nioneo_logical.log.v0
|
140
|
-
- lib/mydb2/schema/label/lucene/segments.gen
|
141
|
-
- lib/mydb2/schema/label/lucene/segments_1
|
142
|
-
- lib/mydb2/schema/label/lucene/write.lock
|
143
|
-
- lib/mydb2/store_lock
|
144
|
-
- lib/mydb2/tm_tx_log.1
|
145
102
|
- lib/neo4j.rb
|
146
|
-
- lib/neo4j.rb~
|
147
103
|
- lib/neo4j/active_node.rb
|
148
104
|
- lib/neo4j/active_node/callbacks.rb
|
149
105
|
- lib/neo4j/active_node/has_n.rb
|
@@ -155,6 +111,9 @@ files:
|
|
155
111
|
- lib/neo4j/active_node/orm_adapter.rb
|
156
112
|
- lib/neo4j/active_node/persistence.rb
|
157
113
|
- lib/neo4j/active_node/property.rb
|
114
|
+
- lib/neo4j/active_node/query.rb
|
115
|
+
- lib/neo4j/active_node/query/query_proxy.rb
|
116
|
+
- lib/neo4j/active_node/quick_query.rb
|
158
117
|
- lib/neo4j/active_node/rels.rb
|
159
118
|
- lib/neo4j/active_node/validations.rb
|
160
119
|
- lib/neo4j/railtie.rb
|