rails_age 0.5.3 → 0.6.1
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.md +39 -13
- data/README.md +246 -10
- data/config/initializers/types.rb +5 -5
- data/lib/apache_age/cypher.rb +95 -0
- data/lib/apache_age/entities/class_methods.rb +68 -38
- data/lib/apache_age/entities/edge.rb +2 -0
- data/lib/apache_age/entities/node.rb +3 -1
- data/lib/apache_age/entities/path.rb +27 -0
- data/lib/apache_age/entities/query_builder.rb +159 -0
- data/lib/apache_age/entities/vertex.rb +47 -47
- data/lib/apache_age/path.rb +4 -0
- data/lib/apache_age/types/{age_type_factory.rb → factory.rb} +3 -3
- data/lib/apache_age/validators/{vertex_type_validator copy.rb → node_type_validator.rb} +1 -1
- data/lib/apache_age/validators/unique_vertex.rb +27 -27
- data/lib/apache_age/validators/vertex_type_validator.rb +15 -0
- data/lib/generators/apache_age/edge/USAGE +7 -7
- data/lib/generators/apache_age/edge/edge_generator.rb +1 -0
- data/lib/generators/apache_age/generator_entity_helpers.rb +1 -9
- data/lib/generators/apache_age/node/USAGE +4 -4
- data/lib/generators/apache_age/node/node_generator.rb +1 -1
- data/lib/generators/apache_age/node/templates/node.rb.tt +2 -2
- data/lib/generators/apache_age/scaffold_edge/scaffold_edge_generator.rb +1 -2
- data/lib/generators/apache_age/scaffold_node/scaffold_node_generator.rb +1 -2
- data/lib/rails_age/version.rb +1 -1
- data/lib/rails_age.rb +5 -4
- data/lib/tasks/config_types.rake +6 -6
- metadata +25 -8
- data/lib/apache_age/types/age_type_generator.rb +0 -46
- data/lib/generators/apache_age/scaffold_edge/scaffold_node_generator.rb +0 -67
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_age
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bill Tihen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-09-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -30,6 +30,20 @@ dependencies:
|
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '9.0'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: ostruct
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
type: :runtime
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
33
47
|
- !ruby/object:Gem::Dependency
|
34
48
|
name: rspec-rails
|
35
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -96,21 +110,25 @@ files:
|
|
96
110
|
- config/routes.rb
|
97
111
|
- db/migrate/20240521062349_add_apache_age.rb
|
98
112
|
- db/schema.rb
|
113
|
+
- lib/apache_age/cypher.rb
|
99
114
|
- lib/apache_age/edge.rb
|
100
115
|
- lib/apache_age/entities/class_methods.rb
|
101
116
|
- lib/apache_age/entities/common_methods.rb
|
102
117
|
- lib/apache_age/entities/edge.rb
|
103
118
|
- lib/apache_age/entities/entity.rb
|
104
119
|
- lib/apache_age/entities/node.rb
|
120
|
+
- lib/apache_age/entities/path.rb
|
121
|
+
- lib/apache_age/entities/query_builder.rb
|
105
122
|
- lib/apache_age/entities/vertex.rb
|
106
123
|
- lib/apache_age/node.rb
|
107
|
-
- lib/apache_age/
|
108
|
-
- lib/apache_age/types/
|
124
|
+
- lib/apache_age/path.rb
|
125
|
+
- lib/apache_age/types/factory.rb
|
109
126
|
- lib/apache_age/validators/expected_node_type.rb
|
127
|
+
- lib/apache_age/validators/node_type_validator.rb
|
110
128
|
- lib/apache_age/validators/unique_edge.rb
|
111
129
|
- lib/apache_age/validators/unique_node.rb
|
112
130
|
- lib/apache_age/validators/unique_vertex.rb
|
113
|
-
- lib/apache_age/validators/vertex_type_validator
|
131
|
+
- lib/apache_age/validators/vertex_type_validator.rb
|
114
132
|
- lib/generators/apache_age/edge/USAGE
|
115
133
|
- lib/generators/apache_age/edge/edge_generator.rb
|
116
134
|
- lib/generators/apache_age/edge/templates/edge.rb.tt
|
@@ -121,7 +139,6 @@ files:
|
|
121
139
|
- lib/generators/apache_age/node/templates/node.rb.tt
|
122
140
|
- lib/generators/apache_age/scaffold_edge/USAGE
|
123
141
|
- lib/generators/apache_age/scaffold_edge/scaffold_edge_generator.rb
|
124
|
-
- lib/generators/apache_age/scaffold_edge/scaffold_node_generator.rb
|
125
142
|
- lib/generators/apache_age/scaffold_edge/templates/controller.rb.tt
|
126
143
|
- lib/generators/apache_age/scaffold_edge/templates/views/_form.html.erb.tt
|
127
144
|
- lib/generators/apache_age/scaffold_edge/templates/views/edit.html.erb.tt
|
@@ -163,14 +180,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
163
180
|
requirements:
|
164
181
|
- - ">="
|
165
182
|
- !ruby/object:Gem::Version
|
166
|
-
version: '3.
|
183
|
+
version: '3.2'
|
167
184
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
168
185
|
requirements:
|
169
186
|
- - ">="
|
170
187
|
- !ruby/object:Gem::Version
|
171
188
|
version: '0'
|
172
189
|
requirements: []
|
173
|
-
rubygems_version: 3.5.
|
190
|
+
rubygems_version: 3.5.18
|
174
191
|
signing_key:
|
175
192
|
specification_version: 4
|
176
193
|
summary: Apache AGE plugin for Rails 7.x
|
@@ -1,46 +0,0 @@
|
|
1
|
-
# lib/apache_age/types/age_type_generator.rb
|
2
|
-
# Automatically generates ActiveModel::Type classes
|
3
|
-
# Dynamically builds this (as a concrete example):
|
4
|
-
# module ApacheAge
|
5
|
-
# module Types
|
6
|
-
# class CompanyType < ActiveModel::Type::Value
|
7
|
-
# def cast(value)
|
8
|
-
# case value
|
9
|
-
# when Nodes::Company
|
10
|
-
# value
|
11
|
-
# when Hash
|
12
|
-
# Nodes::Company.new(value)
|
13
|
-
# else
|
14
|
-
# nil
|
15
|
-
# end
|
16
|
-
# end
|
17
|
-
# def serialize(value)
|
18
|
-
# value.is_a?(Nodes::Company) ? value.attributes : nil
|
19
|
-
# end
|
20
|
-
# end
|
21
|
-
# end
|
22
|
-
# end
|
23
|
-
module ApacheAge
|
24
|
-
module Types
|
25
|
-
class AgeTypeGenerator
|
26
|
-
def self.create_type_for(klass)
|
27
|
-
Class.new(ActiveModel::Type::Value) do
|
28
|
-
define_method(:cast) do |value|
|
29
|
-
case value
|
30
|
-
when klass
|
31
|
-
value
|
32
|
-
when Hash
|
33
|
-
klass.new(value)
|
34
|
-
else
|
35
|
-
nil
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
define_method(:serialize) do |value|
|
40
|
-
value.is_a?(klass) ? value.attributes : nil
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
@@ -1,67 +0,0 @@
|
|
1
|
-
# lib/generators/apache_age/scaffold_node/scaffold_node_generator.rb
|
2
|
-
|
3
|
-
require 'rails/generators'
|
4
|
-
require 'rails/generators/named_base'
|
5
|
-
require 'rails/generators/resource_helpers'
|
6
|
-
|
7
|
-
module ApacheAge
|
8
|
-
class ScaffoldNodeGenerator < Rails::Generators::NamedBase
|
9
|
-
include Rails::Generators::ResourceHelpers
|
10
|
-
|
11
|
-
desc "Generates a node, and its controller and views with the given attributes."
|
12
|
-
|
13
|
-
source_root File.expand_path("templates", __dir__)
|
14
|
-
|
15
|
-
argument :attributes, type: :array, default: [], banner: "field:type field:type"
|
16
|
-
|
17
|
-
def create_model_file
|
18
|
-
invoke 'apache_age:edge', [name] + attributes.collect { |attr| "#{attr.name}:#{attr.type}" }
|
19
|
-
end
|
20
|
-
|
21
|
-
def create_controller_files
|
22
|
-
template(
|
23
|
-
"controller.rb.tt",
|
24
|
-
File.join(Rails.root, "app/controllers", controller_class_path, "#{controller_file_name}_controller.rb")
|
25
|
-
)
|
26
|
-
end
|
27
|
-
|
28
|
-
def create_route
|
29
|
-
route_content = route_text(class_path, file_name)
|
30
|
-
inject_into_file(
|
31
|
-
File.join(Rails.root, 'config', 'routes.rb'), "\n#{route_content}",
|
32
|
-
after: "Rails.application.routes.draw do"
|
33
|
-
)
|
34
|
-
end
|
35
|
-
|
36
|
-
def copy_view_files
|
37
|
-
available_views.each do |view|
|
38
|
-
view_name = view == 'partial' ? "_#{singular_table_name}" : view
|
39
|
-
filename = filename_with_extensions(view_name)
|
40
|
-
template(
|
41
|
-
"views/#{view}.html.erb.tt",
|
42
|
-
File.join(Rails.root, "app/views", controller_file_path, filename)
|
43
|
-
)
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
private
|
48
|
-
|
49
|
-
def available_views
|
50
|
-
%w[index edit show new partial _form]
|
51
|
-
end
|
52
|
-
|
53
|
-
def filename_with_extensions(view)
|
54
|
-
[view, :html, :erb].compact.join('.')
|
55
|
-
end
|
56
|
-
|
57
|
-
def route_text(class_path, file_name)
|
58
|
-
return " resources :#{file_name.pluralize}" if class_path.empty?
|
59
|
-
|
60
|
-
<<-RUBY
|
61
|
-
namespace :#{class_path.join(':')} do
|
62
|
-
resources :#{file_name.pluralize}
|
63
|
-
end
|
64
|
-
RUBY
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|