rails_age 0.5.3 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +39 -13
  3. data/README.md +246 -10
  4. data/config/initializers/types.rb +5 -5
  5. data/lib/apache_age/cypher.rb +95 -0
  6. data/lib/apache_age/entities/class_methods.rb +68 -38
  7. data/lib/apache_age/entities/edge.rb +2 -0
  8. data/lib/apache_age/entities/node.rb +3 -1
  9. data/lib/apache_age/entities/path.rb +27 -0
  10. data/lib/apache_age/entities/query_builder.rb +159 -0
  11. data/lib/apache_age/entities/vertex.rb +47 -47
  12. data/lib/apache_age/path.rb +4 -0
  13. data/lib/apache_age/types/{age_type_factory.rb → factory.rb} +3 -3
  14. data/lib/apache_age/validators/{vertex_type_validator copy.rb → node_type_validator.rb} +1 -1
  15. data/lib/apache_age/validators/unique_vertex.rb +27 -27
  16. data/lib/apache_age/validators/vertex_type_validator.rb +15 -0
  17. data/lib/generators/apache_age/edge/USAGE +7 -7
  18. data/lib/generators/apache_age/edge/edge_generator.rb +1 -0
  19. data/lib/generators/apache_age/generator_entity_helpers.rb +1 -9
  20. data/lib/generators/apache_age/node/USAGE +4 -4
  21. data/lib/generators/apache_age/node/node_generator.rb +1 -1
  22. data/lib/generators/apache_age/node/templates/node.rb.tt +2 -2
  23. data/lib/generators/apache_age/scaffold_edge/scaffold_edge_generator.rb +1 -2
  24. data/lib/generators/apache_age/scaffold_node/scaffold_node_generator.rb +1 -2
  25. data/lib/rails_age/version.rb +1 -1
  26. data/lib/rails_age.rb +5 -4
  27. data/lib/tasks/config_types.rake +6 -6
  28. metadata +25 -8
  29. data/lib/apache_age/types/age_type_generator.rb +0 -46
  30. data/lib/generators/apache_age/scaffold_edge/scaffold_node_generator.rb +0 -67
@@ -0,0 +1,27 @@
1
+ module ApacheAge
2
+ module Entities
3
+ module Path
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ include ActiveModel::Model
8
+ include ActiveModel::Dirty
9
+ include ActiveModel::Attributes
10
+
11
+ attribute :id, :integer
12
+ # attribute :label, :string
13
+ attribute :end_id, :integer
14
+ attribute :start_id, :integer
15
+ # override with a specific node type in the defining class
16
+ attribute :end_node
17
+ attribute :start_node
18
+
19
+ validates :end_node, :start_node, presence: true
20
+ validate :validate_nodes
21
+
22
+ extend ApacheAge::Entities::ClassMethods
23
+ include ApacheAge::Entities::CommonMethods
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,159 @@
1
+ # query =
2
+ # Person.
3
+ # cypher('age_schema')
4
+ # .match("(a:Person), (b:Person)")
5
+ # .where("a.name = 'Node A'", "b.name = 'Node B'")
6
+ # .return("a.name", "b.name")
7
+ # .as("name_a agtype, name_b agtype")
8
+ # .execute
9
+ # def cypher(graph_name = 'age_schema')
10
+ # ApacheAge::Cypher.new(graph_name)
11
+ # self
12
+ # end
13
+
14
+ module ApacheAge
15
+ module Entities
16
+ class QueryBuilder
17
+ attr_accessor :where_clauses, :order_clause, :limit_clause, :model_class, :match_clause,
18
+ :graph_name, :return_clause, :return_names, :return_variables
19
+
20
+ def initialize(model_class, graph_name: nil)
21
+ @model_class = model_class
22
+ @where_clauses = []
23
+ @return_names = ['find']
24
+ @return_clause = 'find'
25
+ @return_variables = []
26
+ @order_clause = nil
27
+ @limit_clause = nil
28
+ @match_clause = model_class.match_clause
29
+ @graph_name = graph_name || model_class.age_graph
30
+ end
31
+
32
+ # def cypher(graph_name = 'age_schema')
33
+ # return self if graph_name.blank?
34
+
35
+ # @graph_name = graph_name
36
+ # self
37
+ # end
38
+
39
+ def match(match_string)
40
+ @match_clause = match_string
41
+ self
42
+ end
43
+
44
+ # need to handle string inputs too: ie: "id(find) = #{id}"
45
+ def where(attributes)
46
+ return self if attributes.blank?
47
+
48
+ @where_clauses <<
49
+ if attributes.is_a?(String)
50
+ if attributes.include?('id(') || attributes.include?('find.')
51
+ attributes
52
+ else
53
+ "find.#{attributes}"
54
+ end
55
+ else
56
+ edge_keys = [:start_id, :start_node, :end_id, :end_node]
57
+ if edge_keys.any? { |key| attributes.include?(key) }
58
+ model_class.send(:where_edge_clause, attributes)
59
+ else
60
+ model_class.send(:where_node_clause, attributes)
61
+ end
62
+ end
63
+
64
+ self
65
+ end
66
+
67
+ # New return method
68
+ def return(*variables)
69
+ return self if variables.blank?
70
+
71
+ @return_variables = variables
72
+ # @return_names = variables.empty? ? ['find'] : variables
73
+ # @return_clause = variables.empty? ? 'find' : "find.#{variables.join(', find.')}"
74
+ self
75
+ end
76
+
77
+ def order(ordering)
78
+ @order_clause = nil
79
+ return self if ordering.blank?
80
+
81
+ order_by_values = Array.wrap(ordering).map { |order| parse_ordering(order) }.join(', ')
82
+ @order_clause = "ORDER BY #{order_by_values}"
83
+ self
84
+ end
85
+
86
+ def limit(limit_value)
87
+ @limit_clause = "LIMIT #{limit_value}"
88
+ self
89
+ end
90
+
91
+ def all
92
+ cypher_sql = build_query
93
+ results = model_class.send(:execute_where, cypher_sql)
94
+ return results if return_variables.empty?
95
+
96
+ results.map(&:to_h).map { _1.slice(*return_variables) }
97
+ end
98
+
99
+ def execute
100
+ cypher_sql = build_query
101
+ model_class.send(:execute_sql, cypher_sql)
102
+ end
103
+
104
+ def first
105
+ cypher_sql = build_query(limit_clause || "LIMIT 1")
106
+ model_class.send(:execute_find, cypher_sql)
107
+ end
108
+
109
+ def to_sql
110
+ build_query.strip
111
+ end
112
+
113
+ private
114
+
115
+ def parse_ordering(ordering)
116
+ if ordering.is_a?(Hash)
117
+ # Convert hash into "find.key direction" format and join with commas
118
+ ordering = ordering.map { |k, v| "find.#{k} #{v}" }.join(', ')
119
+ elsif ordering.is_a?(Symbol)
120
+ # If it's a symbol, simply prepend "find."
121
+ ordering = "find.#{ordering}"
122
+ elsif ordering.is_a?(String)
123
+ # If it's a string, assume it's already in the correct format
124
+ ordering = ordering
125
+ elsif ordering.is_a?(Array)
126
+ # If it's an array, process each element recursively
127
+ ordering = ordering.map do |order|
128
+ if order.is_a?(Hash)
129
+ order.map { |k, v| "find.#{k} #{v}" }.join(', ')
130
+ elsif order.is_a?(Symbol)
131
+ "find.#{order}"
132
+ elsif order.is_a?(String)
133
+ order
134
+ else
135
+ raise ArgumentError, 'Array elements must be a string, symbol, or hash'
136
+ end
137
+ end.join(', ')
138
+ else
139
+ raise ArgumentError, 'Ordering must be a string, symbol, hash, or array'
140
+ end
141
+ end
142
+
143
+ def build_query(_extra_clause = nil)
144
+ where_sql = where_clauses.any? ? "WHERE #{where_clauses.join(' AND ')}" : ''
145
+ order_by = order_clause.present? ? order_clause : ''
146
+ <<-SQL.squish
147
+ SELECT *
148
+ FROM cypher('#{graph_name}', $$
149
+ MATCH #{match_clause}
150
+ #{where_sql}
151
+ RETURN #{return_clause}
152
+ #{order_clause}
153
+ #{limit_clause}
154
+ $$) AS (#{return_names.join(' agtype, ')} agtype);
155
+ SQL
156
+ end
157
+ end
158
+ end
159
+ end
@@ -1,53 +1,53 @@
1
- module ApacheAge
2
- module Entities
3
- module Node
4
- extend ActiveSupport::Concern
1
+ # module ApacheAge
2
+ # module Entities
3
+ # module Vertex
4
+ # extend ActiveSupport::Concern
5
5
 
6
- included do
7
- include ActiveModel::Model
8
- include ActiveModel::Dirty
9
- include ActiveModel::Attributes
6
+ # included do
7
+ # include ActiveModel::Model
8
+ # include ActiveModel::Dirty
9
+ # include ActiveModel::Attributes
10
10
 
11
- attribute :id, :integer
11
+ # attribute :id, :integer
12
12
 
13
- extend ApacheAge::Entities::ClassMethods
14
- include ApacheAge::Entities::CommonMethods
15
- end
13
+ # extend ApacheAge::Entities::ClassMethods
14
+ # include ApacheAge::Entities::CommonMethods
15
+ # end
16
16
 
17
- def age_type = 'vertex'
17
+ # def age_type = 'vertex'
18
18
 
19
- # AgeSchema::Nodes::Company.create(company_name: 'Bedrock Quarry')
20
- # SELECT *
21
- # FROM cypher('age_schema', $$
22
- # CREATE (company:Company {company_name: 'Bedrock Quarry'})
23
- # RETURN company
24
- # $$) as (Company agtype);
25
- def create_sql
26
- alias_name = age_alias || age_label.downcase
27
- <<-SQL
28
- SELECT *
29
- FROM cypher('#{age_graph}', $$
30
- CREATE (#{alias_name}#{self})
31
- RETURN #{alias_name}
32
- $$) as (#{age_label} agtype);
33
- SQL
34
- end
19
+ # # AgeSchema::Nodes::Company.create(company_name: 'Bedrock Quarry')
20
+ # # SELECT *
21
+ # # FROM cypher('age_schema', $$
22
+ # # CREATE (company:Company {company_name: 'Bedrock Quarry'})
23
+ # # RETURN company
24
+ # # $$) as (Company agtype);
25
+ # def create_sql
26
+ # alias_name = age_alias || age_label.downcase
27
+ # <<-SQL
28
+ # SELECT *
29
+ # FROM cypher('#{age_graph}', $$
30
+ # CREATE (#{alias_name}#{self})
31
+ # RETURN #{alias_name}
32
+ # $$) as (#{age_label} agtype);
33
+ # SQL
34
+ # end
35
35
 
36
- # So far just properties of string type with '' around them
37
- def update_sql
38
- alias_name = age_alias || age_label.downcase
39
- set_caluse =
40
- age_properties.map { |k, v| v ? "#{alias_name}.#{k} = '#{v}'" : "#{alias_name}.#{k} = NULL" }.join(', ')
41
- <<-SQL
42
- SELECT *
43
- FROM cypher('#{age_graph}', $$
44
- MATCH (#{alias_name}:#{age_label})
45
- WHERE id(#{alias_name}) = #{id}
46
- SET #{set_caluse}
47
- RETURN #{alias_name}
48
- $$) as (#{age_label} agtype);
49
- SQL
50
- end
51
- end
52
- end
53
- end
36
+ # # So far just properties of string type with '' around them
37
+ # def update_sql
38
+ # alias_name = age_alias || age_label.downcase
39
+ # set_caluse =
40
+ # age_properties.map { |k, v| v ? "#{alias_name}.#{k} = '#{v}'" : "#{alias_name}.#{k} = NULL" }.join(', ')
41
+ # <<-SQL
42
+ # SELECT *
43
+ # FROM cypher('#{age_graph}', $$
44
+ # MATCH (#{alias_name}:#{age_label})
45
+ # WHERE id(#{alias_name}) = #{id}
46
+ # SET #{set_caluse}
47
+ # RETURN #{alias_name}
48
+ # $$) as (#{age_label} agtype);
49
+ # SQL
50
+ # end
51
+ # end
52
+ # end
53
+ # end
@@ -0,0 +1,4 @@
1
+ module ApacheAge
2
+ class Path
3
+ end
4
+ end
@@ -1,4 +1,4 @@
1
- # lib/apache_age/types/age_type_factory.rb
1
+ # lib/apache_age/types/factory.rb
2
2
  # Automatically generates ActiveModel::Type classes
3
3
  # Dynamically builds this (as a concrete example):
4
4
  # module ApacheAge
@@ -22,8 +22,8 @@
22
22
  # end
23
23
  module ApacheAge
24
24
  module Types
25
- class AgeTypeFactory
26
- def self.create_type_for(klass)
25
+ class Factory
26
+ def self.type_for(klass)
27
27
  Class.new(ActiveModel::Type::Value) do
28
28
  define_method(:cast) do |value|
29
29
  case value
@@ -1,5 +1,5 @@
1
1
  module ApacheAge
2
- module VertexTypeValidator
2
+ module NodeTypeValidator
3
3
  def
4
4
  # Register the AGE typesvertex_attribute(attribute_name, type_symbol, klass)
5
5
  attribute attribute_name, type_symbol
@@ -1,32 +1,32 @@
1
- # lib/apache_age/validators/unique_vertex.rb
1
+ # # lib/apache_age/validators/unique_vertex.rb
2
2
 
3
- # Usage (within an Age Model)
4
- # validates_with(
5
- # ApacheAge::Validators::UniqueVertex,
6
- # attributes: [:first_name, :last_name, :gender]
7
- # )
3
+ # # Usage (within an Age Model)
4
+ # # validates_with(
5
+ # # ApacheAge::Validators::UniqueVertex,
6
+ # # attributes: [:first_name, :last_name, :gender]
7
+ # # )
8
8
 
9
- module ApacheAge
10
- module Validators
11
- class UniqueVertex < ActiveModel::Validator
12
- def validate(record)
13
- allowed_keys = record.age_properties.keys
14
- attributes = options[:attributes]
15
- return if attributes.blank?
9
+ # module ApacheAge
10
+ # module Validators
11
+ # class UniqueVertex < ActiveModel::Validator
12
+ # def validate(record)
13
+ # allowed_keys = record.age_properties.keys
14
+ # attributes = options[:attributes]
15
+ # return if attributes.blank?
16
16
 
17
- record_attribs =
18
- attributes
19
- .map { |attr| [attr, record.send(attr)] }
20
- .to_h.symbolize_keys
21
- .slice(*allowed_keys)
22
- query = record.class.find_by(record_attribs)
17
+ # record_attribs =
18
+ # attributes
19
+ # .map { |attr| [attr, record.send(attr)] }
20
+ # .to_h.symbolize_keys
21
+ # .slice(*allowed_keys)
22
+ # query = record.class.find_by(record_attribs)
23
23
 
24
- # if no match is found or if it finds itself, it's valid
25
- return if query.blank? || (query.id == record.id)
24
+ # # if no match is found or if it finds itself, it's valid
25
+ # return if query.blank? || (query.id == record.id)
26
26
 
27
- record.errors.add(:base, 'record not unique')
28
- attributes.each { record.errors.add(_1, 'property combination not unique') }
29
- end
30
- end
31
- end
32
- end
27
+ # record.errors.add(:base, 'record not unique')
28
+ # attributes.each { record.errors.add(_1, 'property combination not unique') }
29
+ # end
30
+ # end
31
+ # end
32
+ # end
@@ -0,0 +1,15 @@
1
+ # module ApacheAge
2
+ # module VertexTypeValidator
3
+ # def
4
+ # # Register the AGE typesvertex_attribute(attribute_name, type_symbol, klass)
5
+ # attribute attribute_name, type_symbol
6
+
7
+ # validate do
8
+ # value = send(attribute_name)
9
+ # unless value.is_a?(klass)
10
+ # errors.add(attribute_name, "must be a #{klass.name}")
11
+ # end
12
+ # end
13
+ # end
14
+ # end
15
+ # end
@@ -23,9 +23,9 @@ Example:
23
23
  validates :employee_role, presence: true
24
24
  validates :begin_date, presence: true
25
25
 
26
- # unique node validator (remove any attributes that are not important to uniqueness)
26
+ # unique edge validator (remove any attributes that are not important to uniqueness)
27
27
  validates_with(
28
- ApacheAge::Validators::UniqueVertex,
28
+ ApacheAge::Validators::UniqueEdge,
29
29
  attributes: [:employee_role, :begin_date :start_node, :end_node]
30
30
  )
31
31
  end
@@ -35,12 +35,12 @@ Example:
35
35
  `bin/rails g apache_age:edge Animals/Cat name age:integer`
36
36
 
37
37
  This creates:
38
- `app/nodes/animals/cat.rb`
38
+ `app/edges/animals/has_cat.rb`
39
39
 
40
40
  with the contents
41
41
  ```
42
- class Animals::Cat
43
- include ApacheAge::Entities::Vertex
42
+ class Animals::HatCat
43
+ include ApacheAge::Entities::Edge
44
44
 
45
45
  attribute :name, :string
46
46
  attribute :age, :integer
@@ -48,9 +48,9 @@ Example:
48
48
  validates :name, presence: true
49
49
  validates :age, presence: true
50
50
 
51
- # unique node validator (remove any attributes that are not important to uniqueness)
51
+ # unique edge validator (remove any attributes that are not important to uniqueness)
52
52
  validates_with(
53
- ApacheAge::Validators::UniqueVertex,
53
+ ApacheAge::Validators::UniqueEdge,
54
54
  attributes: [:name, :age, :start_node, :end_node]
55
55
  )
56
56
  end
@@ -14,6 +14,7 @@ module ApacheAge
14
14
 
15
15
  source_root File.expand_path('templates', __dir__)
16
16
  argument :attributes, type: :array, default: [], banner: "field:type field:type"
17
+ class_option :skip_namespace, type: :boolean, default: true, desc: "Skip namespace 'rails_age' in generated files"
17
18
 
18
19
  def perform_task
19
20
  age_type = 'edge'
@@ -40,14 +40,6 @@ module ApacheAge
40
40
  end.join("\n") + "\n"
41
41
  end
42
42
 
43
- # def indented_end_namespace
44
- # return '' if parent_module.empty?
45
-
46
- # parent_module.split('::').map.with_index do |_, index|
47
- # "#{' ' * (parent_module.split('::').length - 1 - index)}end"
48
- # end.join("\n") + "\n"
49
- # end
50
-
51
43
  def add_type_config
52
44
  return unless File.exist?(types_config_file)
53
45
 
@@ -79,7 +71,7 @@ module ApacheAge
79
71
  <<-RUBY
80
72
  require_dependency '#{file_path}'
81
73
  ActiveModel::Type.register(
82
- :#{type_name}, ApacheAge::Types::AgeTypeGenerator.create_type_for(#{entity_namespaced_class})
74
+ :#{type_name}, ApacheAge::Types::Factory.type_for(#{entity_namespaced_class})
83
75
  )
84
76
  RUBY
85
77
  end
@@ -12,7 +12,7 @@ Example:
12
12
  with the contents:
13
13
  ```
14
14
  class Cat
15
- include ApacheAge::Entities::Vertex
15
+ include ApacheAge::Entities::Node
16
16
 
17
17
  attribute :full_name, :string
18
18
  attribute :birthdate, :date
@@ -22,7 +22,7 @@ Example:
22
22
 
23
23
  # unique node validator (remove any attributes that are not important to uniqueness)
24
24
  validates_with(
25
- ApacheAge::Validators::UniqueVertex,
25
+ ApacheAge::Validators::UniqueNode,
26
26
  attributes: [:full_name, :birthdate]
27
27
  )
28
28
  end
@@ -37,7 +37,7 @@ Example:
37
37
  with the contents
38
38
  ```
39
39
  class Animals::Cat
40
- include ApacheAge::Entities::Vertex
40
+ include ApacheAge::Entities::Node
41
41
 
42
42
  attribute :name, :string
43
43
  attribute :age, :integer
@@ -47,7 +47,7 @@ Example:
47
47
 
48
48
  # unique node validator (remove any attributes that are not important to uniqueness)
49
49
  validates_with(
50
- ApacheAge::Validators::UniqueVertex,
50
+ ApacheAge::Validators::UniqueNode,
51
51
  attributes: [:name, :age]
52
52
  )
53
53
  end
@@ -9,9 +9,9 @@ module ApacheAge
9
9
  include ApacheAge::GeneratorEntityHelpers
10
10
 
11
11
  desc "Generates node (model) with attributes."
12
-
13
12
  source_root File.expand_path('templates', __dir__)
14
13
  argument :attributes, type: :array, default: [], banner: "field:type field:type"
14
+ class_option :skip_namespace, type: :boolean, default: true, desc: "Skip namespace 'rails_age' in generated files"
15
15
 
16
16
  def perform_task
17
17
  age_type = 'node'
@@ -1,5 +1,5 @@
1
1
  class <%= class_name %>
2
- include ApacheAge::Entities::Vertex
2
+ include ApacheAge::Entities::Node
3
3
 
4
4
  <%- attributes_list.each do |attribute| -%>
5
5
  attribute :<%= attribute[:name] %>, :<%= attribute[:type] %>
@@ -11,7 +11,7 @@ class <%= class_name %>
11
11
 
12
12
  # custom unique node validator (remove any attributes that are NOT important to uniqueness)
13
13
  validates_with(
14
- ApacheAge::Validators::UniqueVertex,
14
+ ApacheAge::Validators::UniqueNode,
15
15
  attributes: <%= unique_attributes.inspect %>
16
16
  )
17
17
  end
@@ -9,10 +9,9 @@ module ApacheAge
9
9
  include Rails::Generators::ResourceHelpers
10
10
 
11
11
  desc "Generates an edge, and its controller and views with the given attributes."
12
-
13
12
  source_root File.expand_path("templates", __dir__)
14
-
15
13
  argument :attributes, type: :array, default: [], banner: "field:type field:type"
14
+ class_option :skip_namespace, type: :boolean, default: true, desc: "Skip namespace 'rails_age' in generated files"
16
15
 
17
16
  def create_model_file
18
17
  invoke 'apache_age:edge', [name] + attributes.collect { |attr| "#{attr.name}:#{attr.type}" }
@@ -9,10 +9,9 @@ module ApacheAge
9
9
  include Rails::Generators::ResourceHelpers
10
10
 
11
11
  desc "Generates a node, and its controller and views with the given attributes."
12
-
13
12
  source_root File.expand_path("templates", __dir__)
14
-
15
13
  argument :attributes, type: :array, default: [], banner: "field:type field:type"
14
+ class_option :skip_namespace, type: :boolean, default: true, desc: "Skip namespace 'rails_age' in generated files"
16
15
 
17
16
  def create_model_file
18
17
  invoke 'apache_age:node', [name] + attributes.collect { |attr| "#{attr.name}:#{attr.type}" }
@@ -1,3 +1,3 @@
1
1
  module RailsAge
2
- VERSION = '0.5.3'
2
+ VERSION = '0.6.1'
3
3
  end
data/lib/rails_age.rb CHANGED
@@ -6,18 +6,19 @@ module RailsAge
6
6
  end
7
7
 
8
8
  module ApacheAge
9
+ require 'apache_age/cypher.rb'
10
+ require 'apache_age/entities/query_builder'
9
11
  require 'apache_age/entities/class_methods'
10
12
  require 'apache_age/entities/common_methods'
11
13
  require 'apache_age/entities/entity'
12
- require 'apache_age/entities/vertex'
13
14
  require 'apache_age/entities/node'
14
15
  require 'apache_age/entities/edge'
16
+ # require 'apache_age/entities/path'
15
17
  require 'apache_age/node'
16
18
  require 'apache_age/edge'
19
+ # require 'apache_age/path'
17
20
  require 'apache_age/validators/expected_node_type'
18
21
  require 'apache_age/validators/unique_node'
19
22
  require 'apache_age/validators/unique_edge'
20
- require 'apache_age/validators/unique_vertex'
21
- require 'apache_age/types/age_type_factory'
22
- require 'apache_age/types/age_type_generator'
23
+ require 'apache_age/types/factory'
23
24
  end
@@ -5,28 +5,28 @@ namespace :apache_age do
5
5
  desc "Install AGE types from rails_age into the rails initializers"
6
6
  task :config_types => :environment do
7
7
  types_file_path = File.expand_path("#{Rails.root}/config/initializers/types.rb", __FILE__)
8
- required_file_path = "require 'apache_age/types/age_type_generator'"
8
+ required_file_path = "require 'apache_age/types/factory'"
9
9
  required_file_content =
10
10
  <<~RUBY
11
- require 'apache_age/types/age_type_generator'
11
+ require 'apache_age/types/factory'
12
12
  # AGE Type Definition Usage (edges/nodes):
13
- # require_dependency 'nodes/company'
13
+ # require_dependency 'company'
14
14
  # ActiveModel::Type.register(
15
- # :company, ApacheAge::Types::AgeTypeGenerator.create_type_for(Nodes::Company)
15
+ # :company, ApacheAge::Types::Factory.type_for(Company)
16
16
  # )
17
17
  RUBY
18
18
  node_type_content =
19
19
  <<-RUBY
20
20
  require_dependency 'apache_age/node'
21
21
  ActiveModel::Type.register(
22
- :node, ApacheAge::Types::AgeTypeGenerator.create_type_for(ApacheAge::Node)
22
+ :node, ApacheAge::Types::Factory.type_for(ApacheAge::Node)
23
23
  )
24
24
  RUBY
25
25
  edge_type_content =
26
26
  <<-RUBY
27
27
  require_dependency 'apache_age/edge'
28
28
  ActiveModel::Type.register(
29
- :edge, ApacheAge::Types::AgeTypeGenerator.create_type_for(ApacheAge::Edge)
29
+ :edge, ApacheAge::Types::Factory.type_for(ApacheAge::Edge)
30
30
  )
31
31
  RUBY
32
32