neo4j_legacy 7.2.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +1357 -0
- data/CONTRIBUTORS +8 -0
- data/Gemfile +38 -0
- data/README.md +103 -0
- data/bin/neo4j-jars +33 -0
- data/bin/rake +17 -0
- data/config/locales/en.yml +5 -0
- data/config/neo4j/add_classnames.yml +1 -0
- data/config/neo4j/config.yml +35 -0
- data/lib/active_support/per_thread_registry.rb +1 -0
- data/lib/backports/action_controller/metal/strong_parameters.rb +672 -0
- data/lib/backports/active_model/forbidden_attributes_protection.rb +30 -0
- data/lib/backports/active_support/concern.rb +13 -0
- data/lib/backports/active_support/core_ext/module/attribute_accessors.rb +10 -0
- data/lib/backports/active_support/logger.rb +99 -0
- data/lib/backports/active_support/logger_silence.rb +27 -0
- data/lib/backports/active_support/logger_thread_safe_level.rb +32 -0
- data/lib/backports/active_support/per_thread_registry.rb +60 -0
- data/lib/backports.rb +4 -0
- data/lib/neo4j/active_node/callbacks.rb +8 -0
- data/lib/neo4j/active_node/dependent/association_methods.rb +48 -0
- data/lib/neo4j/active_node/dependent/query_proxy_methods.rb +50 -0
- data/lib/neo4j/active_node/dependent.rb +11 -0
- data/lib/neo4j/active_node/enum.rb +29 -0
- data/lib/neo4j/active_node/has_n/association/rel_factory.rb +61 -0
- data/lib/neo4j/active_node/has_n/association/rel_wrapper.rb +23 -0
- data/lib/neo4j/active_node/has_n/association.rb +280 -0
- data/lib/neo4j/active_node/has_n/association_cypher_methods.rb +108 -0
- data/lib/neo4j/active_node/has_n.rb +532 -0
- data/lib/neo4j/active_node/id_property/accessor.rb +62 -0
- data/lib/neo4j/active_node/id_property.rb +187 -0
- data/lib/neo4j/active_node/initialize.rb +21 -0
- data/lib/neo4j/active_node/labels/index.rb +87 -0
- data/lib/neo4j/active_node/labels/reloading.rb +21 -0
- data/lib/neo4j/active_node/labels.rb +198 -0
- data/lib/neo4j/active_node/node_wrapper.rb +52 -0
- data/lib/neo4j/active_node/orm_adapter.rb +82 -0
- data/lib/neo4j/active_node/persistence.rb +175 -0
- data/lib/neo4j/active_node/property.rb +60 -0
- data/lib/neo4j/active_node/query/query_proxy.rb +361 -0
- data/lib/neo4j/active_node/query/query_proxy_eager_loading.rb +61 -0
- data/lib/neo4j/active_node/query/query_proxy_enumerable.rb +90 -0
- data/lib/neo4j/active_node/query/query_proxy_find_in_batches.rb +19 -0
- data/lib/neo4j/active_node/query/query_proxy_link.rb +117 -0
- data/lib/neo4j/active_node/query/query_proxy_methods.rb +210 -0
- data/lib/neo4j/active_node/query/query_proxy_methods_of_mass_updating.rb +83 -0
- data/lib/neo4j/active_node/query.rb +76 -0
- data/lib/neo4j/active_node/query_methods.rb +65 -0
- data/lib/neo4j/active_node/reflection.rb +86 -0
- data/lib/neo4j/active_node/rels.rb +11 -0
- data/lib/neo4j/active_node/scope.rb +146 -0
- data/lib/neo4j/active_node/unpersisted.rb +48 -0
- data/lib/neo4j/active_node/validations.rb +59 -0
- data/lib/neo4j/active_node.rb +105 -0
- data/lib/neo4j/active_rel/callbacks.rb +15 -0
- data/lib/neo4j/active_rel/initialize.rb +28 -0
- data/lib/neo4j/active_rel/persistence/query_factory.rb +95 -0
- data/lib/neo4j/active_rel/persistence.rb +114 -0
- data/lib/neo4j/active_rel/property.rb +95 -0
- data/lib/neo4j/active_rel/query.rb +95 -0
- data/lib/neo4j/active_rel/rel_wrapper.rb +22 -0
- data/lib/neo4j/active_rel/related_node.rb +83 -0
- data/lib/neo4j/active_rel/types.rb +82 -0
- data/lib/neo4j/active_rel/validations.rb +8 -0
- data/lib/neo4j/active_rel.rb +67 -0
- data/lib/neo4j/class_arguments.rb +39 -0
- data/lib/neo4j/config.rb +124 -0
- data/lib/neo4j/core/query.rb +22 -0
- data/lib/neo4j/errors.rb +28 -0
- data/lib/neo4j/migration.rb +127 -0
- data/lib/neo4j/paginated.rb +27 -0
- data/lib/neo4j/railtie.rb +169 -0
- data/lib/neo4j/schema/operation.rb +91 -0
- data/lib/neo4j/shared/attributes.rb +220 -0
- data/lib/neo4j/shared/callbacks.rb +64 -0
- data/lib/neo4j/shared/cypher.rb +37 -0
- data/lib/neo4j/shared/declared_properties.rb +204 -0
- data/lib/neo4j/shared/declared_property/index.rb +37 -0
- data/lib/neo4j/shared/declared_property.rb +118 -0
- data/lib/neo4j/shared/enum.rb +148 -0
- data/lib/neo4j/shared/filtered_hash.rb +79 -0
- data/lib/neo4j/shared/identity.rb +28 -0
- data/lib/neo4j/shared/initialize.rb +28 -0
- data/lib/neo4j/shared/marshal.rb +23 -0
- data/lib/neo4j/shared/mass_assignment.rb +58 -0
- data/lib/neo4j/shared/permitted_attributes.rb +28 -0
- data/lib/neo4j/shared/persistence.rb +231 -0
- data/lib/neo4j/shared/property.rb +220 -0
- data/lib/neo4j/shared/query_factory.rb +101 -0
- data/lib/neo4j/shared/rel_type_converters.rb +43 -0
- data/lib/neo4j/shared/serialized_properties.rb +30 -0
- data/lib/neo4j/shared/type_converters.rb +418 -0
- data/lib/neo4j/shared/typecasted_attributes.rb +98 -0
- data/lib/neo4j/shared/typecaster.rb +53 -0
- data/lib/neo4j/shared/validations.rb +48 -0
- data/lib/neo4j/shared.rb +51 -0
- data/lib/neo4j/tasks/migration.rake +24 -0
- data/lib/neo4j/timestamps/created.rb +9 -0
- data/lib/neo4j/timestamps/updated.rb +9 -0
- data/lib/neo4j/timestamps.rb +11 -0
- data/lib/neo4j/type_converters.rb +7 -0
- data/lib/neo4j/version.rb +3 -0
- data/lib/neo4j/wrapper.rb +4 -0
- data/lib/neo4j.rb +96 -0
- data/lib/rails/generators/neo4j/model/model_generator.rb +86 -0
- data/lib/rails/generators/neo4j/model/templates/model.erb +15 -0
- data/lib/rails/generators/neo4j_generator.rb +67 -0
- data/neo4j.gemspec +43 -0
- metadata +389 -0
data/lib/neo4j.rb
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
require 'neo4j/version'
|
2
|
+
|
3
|
+
require 'neo4j-core'
|
4
|
+
require 'neo4j/core/cypher_session'
|
5
|
+
require 'neo4j/core/query'
|
6
|
+
require 'active_model'
|
7
|
+
require 'active_support/concern'
|
8
|
+
require 'active_support/core_ext/class/attribute.rb'
|
9
|
+
require 'backports'
|
10
|
+
require 'json'
|
11
|
+
|
12
|
+
require 'neo4j/errors'
|
13
|
+
require 'neo4j/config'
|
14
|
+
require 'neo4j/wrapper'
|
15
|
+
require 'neo4j/active_rel/rel_wrapper'
|
16
|
+
require 'neo4j/active_node/node_wrapper'
|
17
|
+
require 'neo4j/shared/type_converters'
|
18
|
+
require 'neo4j/shared/rel_type_converters'
|
19
|
+
require 'neo4j/shared/marshal'
|
20
|
+
require 'neo4j/type_converters'
|
21
|
+
require 'neo4j/paginated'
|
22
|
+
require 'neo4j/schema/operation'
|
23
|
+
|
24
|
+
require 'neo4j/timestamps'
|
25
|
+
|
26
|
+
require 'neo4j/shared/callbacks'
|
27
|
+
require 'neo4j/shared/filtered_hash'
|
28
|
+
require 'neo4j/shared/declared_property/index'
|
29
|
+
require 'neo4j/shared/declared_property'
|
30
|
+
require 'neo4j/shared/declared_properties'
|
31
|
+
require 'neo4j/shared/enum'
|
32
|
+
require 'neo4j/shared/mass_assignment'
|
33
|
+
require 'neo4j/shared/attributes'
|
34
|
+
require 'neo4j/shared/typecasted_attributes'
|
35
|
+
require 'neo4j/shared/property'
|
36
|
+
require 'neo4j/shared/persistence'
|
37
|
+
require 'neo4j/shared/validations'
|
38
|
+
require 'neo4j/shared/identity'
|
39
|
+
require 'neo4j/shared/serialized_properties'
|
40
|
+
require 'neo4j/shared/typecaster'
|
41
|
+
require 'neo4j/shared/initialize'
|
42
|
+
require 'neo4j/shared/query_factory'
|
43
|
+
require 'neo4j/shared/cypher'
|
44
|
+
require 'neo4j/shared/permitted_attributes'
|
45
|
+
require 'neo4j/shared'
|
46
|
+
|
47
|
+
require 'neo4j/active_rel/callbacks'
|
48
|
+
require 'neo4j/active_rel/initialize'
|
49
|
+
require 'neo4j/active_rel/property'
|
50
|
+
require 'neo4j/active_rel/persistence/query_factory'
|
51
|
+
require 'neo4j/active_rel/persistence'
|
52
|
+
require 'neo4j/active_rel/validations'
|
53
|
+
require 'neo4j/active_rel/query'
|
54
|
+
require 'neo4j/active_rel/related_node'
|
55
|
+
require 'neo4j/active_rel/types'
|
56
|
+
require 'neo4j/active_rel'
|
57
|
+
|
58
|
+
require 'neo4j/active_node/dependent'
|
59
|
+
require 'neo4j/active_node/dependent/query_proxy_methods'
|
60
|
+
require 'neo4j/active_node/dependent/association_methods'
|
61
|
+
require 'neo4j/active_node/enum'
|
62
|
+
require 'neo4j/active_node/query_methods'
|
63
|
+
require 'neo4j/active_node/query/query_proxy_methods'
|
64
|
+
require 'neo4j/active_node/query/query_proxy_methods_of_mass_updating'
|
65
|
+
require 'neo4j/active_node/query/query_proxy_enumerable'
|
66
|
+
require 'neo4j/active_node/query/query_proxy_find_in_batches'
|
67
|
+
require 'neo4j/active_node/query/query_proxy_eager_loading'
|
68
|
+
require 'neo4j/active_node/query/query_proxy_link'
|
69
|
+
require 'neo4j/active_node/labels/index'
|
70
|
+
require 'neo4j/active_node/labels/reloading'
|
71
|
+
require 'neo4j/active_node/labels'
|
72
|
+
require 'neo4j/active_node/id_property/accessor'
|
73
|
+
require 'neo4j/active_node/id_property'
|
74
|
+
require 'neo4j/active_node/callbacks'
|
75
|
+
require 'neo4j/active_node/initialize'
|
76
|
+
require 'neo4j/active_node/property'
|
77
|
+
require 'neo4j/active_node/persistence'
|
78
|
+
require 'neo4j/active_node/validations'
|
79
|
+
require 'neo4j/active_node/rels'
|
80
|
+
require 'neo4j/active_node/reflection'
|
81
|
+
require 'neo4j/active_node/unpersisted'
|
82
|
+
require 'neo4j/active_node/has_n'
|
83
|
+
require 'neo4j/active_node/has_n/association_cypher_methods'
|
84
|
+
require 'neo4j/active_node/has_n/association/rel_wrapper'
|
85
|
+
require 'neo4j/active_node/has_n/association/rel_factory'
|
86
|
+
require 'neo4j/active_node/has_n/association'
|
87
|
+
require 'neo4j/active_node/query/query_proxy'
|
88
|
+
require 'neo4j/active_node/query'
|
89
|
+
require 'neo4j/active_node/scope'
|
90
|
+
require 'neo4j/active_node'
|
91
|
+
|
92
|
+
require 'neo4j/active_node/orm_adapter'
|
93
|
+
if defined?(Rails)
|
94
|
+
require 'rails/generators'
|
95
|
+
require 'rails/generators/neo4j_generator'
|
96
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '..', '..', '..', '..', 'neo4j.rb')
|
2
|
+
|
3
|
+
class Neo4j::Generators::ModelGenerator < Neo4j::Generators::Base #:nodoc:
|
4
|
+
argument :attributes, type: :array, default: [], banner: 'field:type field:type'
|
5
|
+
|
6
|
+
check_class_collision
|
7
|
+
|
8
|
+
class_option :timestamps, type: :boolean
|
9
|
+
class_option :parent, type: :string, desc: 'The parent class for the generated model'
|
10
|
+
class_option :indices, type: :array, desc: 'The properties which should be indexed'
|
11
|
+
class_option :has_one, type: :array, desc: 'A list of has_one relationships'
|
12
|
+
class_option :has_many, type: :array, desc: 'A list of has_many relationships'
|
13
|
+
|
14
|
+
def create_model_file
|
15
|
+
template 'model.erb', File.join('app/models', class_path, "#{singular_name}.rb")
|
16
|
+
end
|
17
|
+
|
18
|
+
protected
|
19
|
+
|
20
|
+
def migration?
|
21
|
+
false
|
22
|
+
end
|
23
|
+
|
24
|
+
def timestamps?
|
25
|
+
options[:timestamps]
|
26
|
+
end
|
27
|
+
|
28
|
+
# rubocop:disable Style/PredicateName
|
29
|
+
def has_many?
|
30
|
+
options[:has_many]
|
31
|
+
end
|
32
|
+
|
33
|
+
def has_many_statements
|
34
|
+
txt = ''
|
35
|
+
options[:has_many].each do |key|
|
36
|
+
txt << has_x('has_many', key)
|
37
|
+
end
|
38
|
+
txt
|
39
|
+
end
|
40
|
+
|
41
|
+
def has_one?
|
42
|
+
options[:has_one]
|
43
|
+
end
|
44
|
+
|
45
|
+
def has_x(method, key)
|
46
|
+
to, from = key.split(':')
|
47
|
+
(from ? "\n #{method}(:#{to}).from(:#{from})\n" : "\n #{method} :#{to}")
|
48
|
+
end
|
49
|
+
|
50
|
+
def has_one_statements
|
51
|
+
txt = ''
|
52
|
+
options[:has_one].each do |key|
|
53
|
+
txt << has_x('has_one', key)
|
54
|
+
end
|
55
|
+
txt
|
56
|
+
end
|
57
|
+
# rubocop:enable Style/PredicateName
|
58
|
+
|
59
|
+
def indices?
|
60
|
+
options[:indices]
|
61
|
+
end
|
62
|
+
|
63
|
+
|
64
|
+
def index_fragment(property)
|
65
|
+
return if !options[:indices] || !options[:indices].include?(property)
|
66
|
+
|
67
|
+
"index :#{property}"
|
68
|
+
end
|
69
|
+
|
70
|
+
def parent?
|
71
|
+
options[:parent]
|
72
|
+
end
|
73
|
+
|
74
|
+
def timestamp_statements
|
75
|
+
'
|
76
|
+
property :created_at, type: DateTime
|
77
|
+
# property :created_on, type: Date
|
78
|
+
|
79
|
+
property :updated_at, type: DateTime
|
80
|
+
# property :updated_on, type: Date
|
81
|
+
|
82
|
+
'
|
83
|
+
end
|
84
|
+
|
85
|
+
hook_for :test_framework
|
86
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class <%= class_name %> <%= parent? ? "#{options[:parent].classify}" : "" %>
|
2
|
+
include Neo4j::ActiveNode
|
3
|
+
<% attributes.reject(&:reference?).each do |attribute| -%>
|
4
|
+
property :<%= attribute.name %><%= ", type: #{attribute.type_class}" unless attribute.type_class == 'any' %><%= "\n " + index_fragment if index_fragment = index_fragment(attribute.name) %>
|
5
|
+
<% end -%>
|
6
|
+
|
7
|
+
<% attributes.select(&:reference?).each do |attribute| -%>
|
8
|
+
has_one :in_or_out_or_both, :<%= attribute.name %>, type: :FILL_IN_RELATIONSHIP_TYPE_HERE
|
9
|
+
<% end -%>
|
10
|
+
|
11
|
+
<%= has_many_statements if has_many? -%>
|
12
|
+
<%= has_one_statements if has_one? -%>
|
13
|
+
|
14
|
+
<%= timestamp_statements if timestamps? -%>
|
15
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'rails/generators/named_base'
|
2
|
+
require 'rails/generators/active_model'
|
3
|
+
|
4
|
+
|
5
|
+
module Neo4j
|
6
|
+
module Generators #:nodoc:
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
class Neo4j::Generators::Base < ::Rails::Generators::NamedBase #:nodoc:
|
11
|
+
def self.source_root
|
12
|
+
@_neo4j_source_root ||= File.expand_path(File.join(File.dirname(__FILE__),
|
13
|
+
'neo4j', generator_name, 'templates'))
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class Neo4j::Generators::ActiveModel < Rails::Generators::ActiveModel #:nodoc:
|
18
|
+
def self.all(klass)
|
19
|
+
"#{klass}.all"
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.find(klass, params = nil)
|
23
|
+
"#{klass}.find(#{params})"
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.build(klass, params = nil)
|
27
|
+
if params
|
28
|
+
"#{klass}.new(#{params})"
|
29
|
+
else
|
30
|
+
"#{klass}.new"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def save
|
35
|
+
"#{name}.save"
|
36
|
+
end
|
37
|
+
|
38
|
+
def update_attributes(params = nil)
|
39
|
+
"#{name}.update_attributes(#{params})"
|
40
|
+
end
|
41
|
+
|
42
|
+
def errors
|
43
|
+
"#{name}.errors"
|
44
|
+
end
|
45
|
+
|
46
|
+
def destroy
|
47
|
+
"#{name}.destroy"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
module Rails
|
52
|
+
module Generators
|
53
|
+
class GeneratedAttribute #:nodoc:
|
54
|
+
def type_class
|
55
|
+
case type.to_s.downcase
|
56
|
+
when 'any' then 'any'
|
57
|
+
when 'datetime' then 'DateTime'
|
58
|
+
when 'date' then 'Date'
|
59
|
+
when 'integer', 'number', 'fixnum' then 'Integer'
|
60
|
+
when 'float' then 'Float'
|
61
|
+
else
|
62
|
+
'String'
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
data/neo4j.gemspec
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
lib = File.expand_path('../lib/', __FILE__)
|
2
|
+
$LOAD_PATH.unshift lib unless $LOAD_PATH.include?(lib)
|
3
|
+
|
4
|
+
require 'neo4j/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = 'neo4j_legacy'
|
8
|
+
s.version = Neo4j::VERSION
|
9
|
+
s.required_ruby_version = '>= 1.9.3'
|
10
|
+
|
11
|
+
s.authors = 'Andreas Ronge, Brian Underwood, Chris Grigg, Dominic Sayers'
|
12
|
+
s.email = 'andreas.ronge@gmail.com, brian@brian-underwood.codes, chris@subvertallmedia.com, dominic@sayers.cc'
|
13
|
+
s.homepage = 'https://github.com/xenapto/neo4j/'
|
14
|
+
s.summary = 'A graph database for Ruby'
|
15
|
+
s.license = 'MIT'
|
16
|
+
s.description = <<-EOF
|
17
|
+
A Neo4j OGM (Object-Graph-Mapper) for use in Ruby on Rails and Rack frameworks heavily inspired by ActiveRecord.
|
18
|
+
This fork enables this gem to be used in Rails 3.2 projects
|
19
|
+
EOF
|
20
|
+
|
21
|
+
s.require_path = 'lib'
|
22
|
+
s.files = Dir.glob('{bin,lib,config}/**/*') + %w(README.md CHANGELOG.md CONTRIBUTORS Gemfile neo4j.gemspec)
|
23
|
+
s.executables = ['neo4j-jars']
|
24
|
+
s.has_rdoc = true
|
25
|
+
s.extra_rdoc_files = %w( README.md )
|
26
|
+
s.rdoc_options = ['--quiet', '--title', 'Neo4j.rb', '--line-numbers', '--main', 'README.rdoc', '--inline-source']
|
27
|
+
|
28
|
+
s.add_dependency('orm_adapter', '~> 0.5.0')
|
29
|
+
s.add_dependency('activemodel', '>= 3.2', '< 5.1')
|
30
|
+
s.add_dependency('activesupport', '>= 3.2', '< 5.1')
|
31
|
+
s.add_dependency('thread_safe', '~> 0.3', '>= 0.3.4')
|
32
|
+
s.add_dependency('neo4j-core', '>= 6.0.0', '< 7.0.0')
|
33
|
+
s.add_dependency('neo4j-community', '~> 2.0') if RUBY_PLATFORM =~ /java/
|
34
|
+
s.add_development_dependency('railties', '>= 3.2', '< 5.1')
|
35
|
+
s.add_development_dependency('pry')
|
36
|
+
s.add_development_dependency('os')
|
37
|
+
s.add_development_dependency('rake')
|
38
|
+
s.add_development_dependency('yard')
|
39
|
+
s.add_development_dependency('guard')
|
40
|
+
s.add_development_dependency('guard-rubocop')
|
41
|
+
s.add_development_dependency('guard-rspec')
|
42
|
+
s.add_development_dependency('rubocop', '~> 0.34.0')
|
43
|
+
end
|