rom-core 4.2.1 → 5.0.0

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 (139) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +0 -2
  3. data/lib/rom-core.rb +2 -0
  4. data/lib/rom/array_dataset.rb +2 -0
  5. data/lib/rom/association_set.rb +2 -0
  6. data/lib/rom/associations/abstract.rb +2 -0
  7. data/lib/rom/associations/definitions.rb +2 -0
  8. data/lib/rom/associations/definitions/abstract.rb +2 -0
  9. data/lib/rom/associations/definitions/many_to_many.rb +2 -0
  10. data/lib/rom/associations/definitions/many_to_one.rb +2 -0
  11. data/lib/rom/associations/definitions/one_to_many.rb +2 -0
  12. data/lib/rom/associations/definitions/one_to_one.rb +2 -0
  13. data/lib/rom/associations/definitions/one_to_one_through.rb +2 -0
  14. data/lib/rom/associations/many_to_many.rb +2 -0
  15. data/lib/rom/associations/many_to_one.rb +2 -0
  16. data/lib/rom/associations/one_to_many.rb +2 -0
  17. data/lib/rom/associations/one_to_one.rb +2 -0
  18. data/lib/rom/associations/one_to_one_through.rb +2 -0
  19. data/lib/rom/associations/through_identifier.rb +2 -0
  20. data/lib/rom/attribute.rb +58 -72
  21. data/lib/rom/auto_curry.rb +2 -0
  22. data/lib/rom/cache.rb +2 -0
  23. data/lib/rom/command.rb +7 -5
  24. data/lib/rom/command_compiler.rb +2 -0
  25. data/lib/rom/command_proxy.rb +2 -0
  26. data/lib/rom/command_registry.rb +13 -7
  27. data/lib/rom/commands.rb +2 -0
  28. data/lib/rom/commands/class_interface.rb +4 -2
  29. data/lib/rom/commands/composite.rb +2 -0
  30. data/lib/rom/commands/create.rb +2 -0
  31. data/lib/rom/commands/delete.rb +2 -0
  32. data/lib/rom/commands/graph.rb +2 -0
  33. data/lib/rom/commands/graph/class_interface.rb +2 -0
  34. data/lib/rom/commands/graph/input_evaluator.rb +2 -0
  35. data/lib/rom/commands/lazy.rb +2 -0
  36. data/lib/rom/commands/lazy/create.rb +2 -0
  37. data/lib/rom/commands/lazy/delete.rb +2 -0
  38. data/lib/rom/commands/lazy/update.rb +2 -0
  39. data/lib/rom/commands/update.rb +2 -0
  40. data/lib/rom/configuration.rb +2 -0
  41. data/lib/rom/configuration_dsl.rb +2 -0
  42. data/lib/rom/configuration_dsl/command.rb +2 -0
  43. data/lib/rom/configuration_dsl/command_dsl.rb +2 -0
  44. data/lib/rom/configuration_dsl/relation.rb +2 -0
  45. data/lib/rom/configuration_plugin.rb +2 -0
  46. data/lib/rom/constants.rb +3 -0
  47. data/lib/rom/container.rb +2 -0
  48. data/lib/rom/core.rb +4 -1
  49. data/lib/rom/create_container.rb +2 -0
  50. data/lib/rom/data_proxy.rb +2 -0
  51. data/lib/rom/enumerable_dataset.rb +2 -0
  52. data/lib/rom/environment.rb +2 -0
  53. data/lib/rom/gateway.rb +2 -0
  54. data/lib/rom/global.rb +2 -0
  55. data/lib/rom/global/plugin_dsl.rb +2 -0
  56. data/lib/rom/header.rb +198 -0
  57. data/lib/rom/header/attribute.rb +192 -0
  58. data/lib/rom/initializer.rb +2 -0
  59. data/lib/rom/lint/enumerable_dataset.rb +2 -0
  60. data/lib/rom/lint/gateway.rb +2 -0
  61. data/lib/rom/lint/linter.rb +2 -0
  62. data/lib/rom/lint/spec.rb +2 -0
  63. data/lib/rom/lint/test.rb +2 -0
  64. data/lib/rom/mapper.rb +100 -0
  65. data/lib/rom/mapper/attribute_dsl.rb +480 -0
  66. data/lib/rom/mapper/builder.rb +39 -0
  67. data/lib/rom/mapper/configuration_plugin.rb +28 -0
  68. data/lib/rom/mapper/dsl.rb +123 -0
  69. data/lib/rom/mapper/mapper_dsl.rb +45 -0
  70. data/lib/rom/mapper/model_dsl.rb +60 -0
  71. data/lib/rom/mapper_compiler.rb +84 -0
  72. data/lib/rom/mapper_registry.rb +2 -0
  73. data/lib/rom/memory.rb +2 -0
  74. data/lib/rom/memory/associations.rb +2 -0
  75. data/lib/rom/memory/associations/many_to_many.rb +2 -0
  76. data/lib/rom/memory/associations/many_to_one.rb +2 -0
  77. data/lib/rom/memory/associations/one_to_many.rb +2 -0
  78. data/lib/rom/memory/associations/one_to_one.rb +2 -0
  79. data/lib/rom/memory/commands.rb +2 -0
  80. data/lib/rom/memory/dataset.rb +2 -0
  81. data/lib/rom/memory/gateway.rb +2 -0
  82. data/lib/rom/memory/mapper_compiler.rb +2 -0
  83. data/lib/rom/memory/relation.rb +2 -0
  84. data/lib/rom/memory/schema.rb +2 -0
  85. data/lib/rom/memory/storage.rb +2 -0
  86. data/lib/rom/memory/types.rb +2 -0
  87. data/lib/rom/model_builder.rb +103 -0
  88. data/lib/rom/open_struct.rb +37 -0
  89. data/lib/rom/pipeline.rb +2 -0
  90. data/lib/rom/plugin.rb +2 -0
  91. data/lib/rom/plugin_base.rb +2 -0
  92. data/lib/rom/plugin_registry.rb +2 -0
  93. data/lib/rom/plugins/command/schema.rb +2 -0
  94. data/lib/rom/plugins/command/timestamps.rb +2 -0
  95. data/lib/rom/plugins/relation/instrumentation.rb +2 -0
  96. data/lib/rom/plugins/relation/registry_reader.rb +2 -0
  97. data/lib/rom/plugins/schema/timestamps.rb +8 -1
  98. data/lib/rom/processor.rb +30 -0
  99. data/lib/rom/processor/transproc.rb +417 -0
  100. data/lib/rom/registry.rb +2 -0
  101. data/lib/rom/relation.rb +4 -2
  102. data/lib/rom/relation/class_interface.rb +2 -0
  103. data/lib/rom/relation/combined.rb +2 -0
  104. data/lib/rom/relation/commands.rb +2 -0
  105. data/lib/rom/relation/composite.rb +2 -0
  106. data/lib/rom/relation/curried.rb +3 -1
  107. data/lib/rom/relation/graph.rb +2 -0
  108. data/lib/rom/relation/loaded.rb +2 -0
  109. data/lib/rom/relation/materializable.rb +2 -0
  110. data/lib/rom/relation/name.rb +2 -0
  111. data/lib/rom/relation/view_dsl.rb +2 -0
  112. data/lib/rom/relation/wrap.rb +2 -0
  113. data/lib/rom/relation_registry.rb +2 -0
  114. data/lib/rom/schema.rb +39 -6
  115. data/lib/rom/schema/associations_dsl.rb +5 -3
  116. data/lib/rom/schema/dsl.rb +41 -11
  117. data/lib/rom/schema/inferrer.rb +21 -3
  118. data/lib/rom/schema_plugin.rb +2 -0
  119. data/lib/rom/setup.rb +2 -0
  120. data/lib/rom/setup/auto_registration.rb +2 -0
  121. data/lib/rom/setup/auto_registration_strategies/base.rb +3 -1
  122. data/lib/rom/setup/auto_registration_strategies/custom_namespace.rb +2 -0
  123. data/lib/rom/setup/auto_registration_strategies/no_namespace.rb +2 -0
  124. data/lib/rom/setup/auto_registration_strategies/with_namespace.rb +2 -0
  125. data/lib/rom/setup/finalize.rb +2 -0
  126. data/lib/rom/setup/finalize/finalize_commands.rb +2 -0
  127. data/lib/rom/setup/finalize/finalize_mappers.rb +2 -0
  128. data/lib/rom/setup/finalize/finalize_relations.rb +2 -0
  129. data/lib/rom/struct.rb +108 -0
  130. data/lib/rom/struct_compiler.rb +110 -0
  131. data/lib/rom/support/configurable.rb +2 -0
  132. data/lib/rom/support/inflector.rb +2 -0
  133. data/lib/rom/support/memoizable.rb +2 -0
  134. data/lib/rom/support/notifications.rb +2 -0
  135. data/lib/rom/transaction.rb +2 -0
  136. data/lib/rom/transformer.rb +34 -0
  137. data/lib/rom/types.rb +10 -3
  138. data/lib/rom/version.rb +3 -1
  139. metadata +37 -21
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rom/registry'
2
4
 
3
5
  module ROM
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rom/constants'
2
4
  require 'rom/relation_registry'
3
5
  require 'rom/mapper_registry'
@@ -0,0 +1,108 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'dry/struct'
4
+
5
+ module ROM
6
+ # Simple data-struct class
7
+ #
8
+ # ROM structs are plain data structures loaded by repositories.
9
+ # They implement Hash protocol which means that they can be used
10
+ # in places where Hash-like objects are supported.
11
+ #
12
+ # Repositories define subclasses of ROM::Struct automatically, they are
13
+ # defined in the ROM::Struct namespace by default, but you set it up
14
+ # to use your namespace/module as well.
15
+ #
16
+ # Structs are based on dry-struct gem, they include `schema` with detailed information
17
+ # about attribute types returned from relations, thus can be introspected to build
18
+ # additional functionality when desired.
19
+ #
20
+ # There is a caveat you should know about when working with structs. Struct classes
21
+ # have names but at the same time they're anonymous, i.e. you can't get the User struct class
22
+ # with ROM::Struct::User. ROM will create as many struct classes for User as needed,
23
+ # they all will have the same name and ROM::Struct::User will be the common parent class for
24
+ # them. Combined with the ability to provide your own namespace for structs this enables to
25
+ # pre-define the parent class.
26
+ #
27
+ # @example accessing relation struct model
28
+ # rom = ROM.container(:sql, 'sqlite::memory') do |conf|
29
+ # conf.default.create_table(:users) do
30
+ # primary_key :id
31
+ # column :name, String
32
+ # end
33
+ # end
34
+ #
35
+ # class UserRepo < ROM::Repository[:users]
36
+ # end
37
+ #
38
+ # user_repo = UserRepo.new(rom)
39
+ #
40
+ # # get auto-generated User struct
41
+ # model = user_repo.users.mapper.model
42
+ # # => ROM::Struct::User
43
+ #
44
+ # # see struct's schema attributes
45
+ #
46
+ # # model.schema.key(:id)
47
+ # # => #<Dry::Types[id: Nominal<Integer meta={primary_key: true, source: :users}>]>
48
+ #
49
+ # model.schema[:name]
50
+ # # => #<Dry::Types[name: Sum<Nominal<NilClass> | Nominal<String> meta={source: :users}>]>
51
+ #
52
+ # @example passing a namespace with an existing parent class
53
+ # module Entities
54
+ # class User < ROM::Struct
55
+ # def upcased_name
56
+ # name.upcase
57
+ # end
58
+ # end
59
+ # end
60
+ #
61
+ # class UserRepo < ROM::Repository[:users]
62
+ # struct_namespace Entities
63
+ # end
64
+ #
65
+ # user_repo = UserRepo.new(rom)
66
+ # user = user_repo.users.by_pk(1).one!
67
+ # user.name # => "Jane"
68
+ # user.upcased_name # => "JANE"
69
+ #
70
+ # @see http://dry-rb.org/gems/dry-struct dry-struct
71
+ # @see http://dry-rb.org/gems/dry-types dry-types
72
+ #
73
+ # @api public
74
+ class Struct < Dry::Struct
75
+ MissingAttribute = Class.new(NameError) do
76
+ def initialize(&block)
77
+ super
78
+ @message_proc = block
79
+ end
80
+
81
+ def message
82
+ @message_proc.call
83
+ end
84
+ end
85
+
86
+ # Return attribute value
87
+ #
88
+ # @param [Symbol] name The attribute name
89
+ #
90
+ # @api public
91
+ def fetch(name)
92
+ __send__(name)
93
+ end
94
+
95
+ # @api private
96
+ def respond_to_missing?(*)
97
+ super
98
+ end
99
+
100
+ private
101
+
102
+ def method_missing(*)
103
+ super
104
+ rescue NameError => error
105
+ raise MissingAttribute.new { "#{ error.message } (attribute not loaded?)" }
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,110 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rom/support/inflector'
4
+ require 'dry/core/class_builder'
5
+ require 'dry/types/compiler'
6
+
7
+ require 'rom/initializer'
8
+ require 'rom/types'
9
+ require 'rom/cache'
10
+ require 'rom/struct'
11
+ require 'rom/open_struct'
12
+ require 'rom/attribute'
13
+
14
+ module ROM
15
+ # @api private
16
+ class StructCompiler < Dry::Types::Compiler
17
+ extend Initializer
18
+
19
+ param :registry, default: -> { Dry::Types }
20
+ option :cache, default: -> { Cache.new }
21
+
22
+ # @api private
23
+ def initialize(*args)
24
+ super
25
+ @cache = cache.namespaced(:structs)
26
+ end
27
+
28
+ # Build a struct class based on relation header ast
29
+ #
30
+ # @api private
31
+ def call(*args)
32
+ cache.fetch_or_store(args) do
33
+ name, header, ns = args
34
+ attributes = header.map(&method(:visit)).compact
35
+
36
+ if attributes.empty?
37
+ ROM::OpenStruct
38
+ else
39
+ build_class(name, ROM::Struct, ns) do |klass|
40
+ klass.attributes(attributes.to_h)
41
+ end
42
+ end
43
+ end
44
+ end
45
+ alias_method :[], :call
46
+
47
+ private
48
+
49
+ # @api private
50
+ def visit_relation(node)
51
+ _, header, meta = node
52
+ name = meta[:combine_name] || meta[:alias]
53
+ namespace = meta.fetch(:struct_namespace)
54
+
55
+ model = meta[:model] || call(name, header, namespace)
56
+
57
+ member =
58
+ if model < Dry::Struct
59
+ model
60
+ else
61
+ Dry::Types::Nominal.new(model).constructor(&model.method(:new))
62
+ end
63
+
64
+ if meta[:combine_type] == :many
65
+ [name, Types::Array.of(member)]
66
+ else
67
+ [name, member.optional]
68
+ end
69
+ end
70
+
71
+ # @api private
72
+ def visit_attribute(node)
73
+ name, type, meta = node
74
+
75
+ [meta[:alias] && !meta[:wrapped] ? meta[:alias] : name, visit(type).meta(meta)]
76
+ end
77
+
78
+ # @api private
79
+ def visit_constructor(node)
80
+ definition, * = node
81
+
82
+ visit(definition)
83
+ end
84
+
85
+ # @api private
86
+ def visit_constrained(node)
87
+ definition, _ = node
88
+
89
+ visit(definition)
90
+ end
91
+
92
+ # @api private
93
+ def visit_enum(node)
94
+ type_node, * = node
95
+ visit(type_node)
96
+ end
97
+
98
+ # @api private
99
+ def build_class(name, parent, ns, &block)
100
+ Dry::Core::ClassBuilder.
101
+ new(name: class_name(name), parent: parent, namespace: ns).
102
+ call(&block)
103
+ end
104
+
105
+ # @api private
106
+ def class_name(name)
107
+ Inflector.classify(Inflector.singularize(name))
108
+ end
109
+ end
110
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ROM
2
4
  # This extension is only used for environment objects to configure arbitrary options, each
3
5
  # adapter can use them according to what they need.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'dry/inflector'
2
4
 
3
5
  module ROM
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ROM
2
4
  # @api private
3
5
  module Memoizable
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'dry/equalizer'
2
4
 
3
5
  require 'rom/constants'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ROM
2
4
  # @api private
3
5
  class Transaction
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'dry/core/class_attributes'
4
+ require 'transproc/transformer'
5
+
6
+ require 'rom/processor/transproc'
7
+
8
+ module ROM
9
+ # Transformer is a data mapper which uses Transproc's transformer DSL to define
10
+ # transformations.
11
+ #
12
+ # @api public
13
+ class Transformer < Transproc::Transformer[ROM::Processor::Transproc::Functions]
14
+ extend Dry::Core::ClassAttributes
15
+
16
+ defines :relation, :register_as
17
+
18
+ # This is needed to make transformers compatible with rom setup
19
+ #
20
+ # @api private
21
+ def self.base_relation
22
+ relation
23
+ end
24
+
25
+ # Build a mapper instance
26
+ #
27
+ # @return [Transformer]
28
+ #
29
+ # @api public
30
+ def self.build
31
+ new
32
+ end
33
+ end
34
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'dry-types'
2
4
  require 'json'
3
5
 
@@ -5,8 +7,10 @@ module ROM
5
7
  # Default namespace with built-in attribute types
6
8
  #
7
9
  # @api public
10
+ #
11
+ # rubocop:disable Naming/MethodName
8
12
  module Types
9
- include Dry::Types.module
13
+ include Dry::Types(default: :nominal)
10
14
 
11
15
  # @api private
12
16
  def self.included(other)
@@ -23,14 +27,16 @@ module ROM
23
27
  # @param [Symbol] relation The name of the target relation
24
28
  # @param [Object] type The type of an attribute
25
29
  #
26
- # @return [Dry::Types::Definition]
30
+ # @return [Dry::Types::Nominal]
27
31
  #
28
32
  # @api public
29
- def ForeignKey(relation, type = Types::Int)
33
+ def ForeignKey(relation, type = Types::Integer)
30
34
  type.meta(foreign_key: true, target: relation)
31
35
  end
32
36
  end
33
37
 
38
+ # @!parse module Coercible;end
39
+
34
40
  # Define a json-to-hash attribute type
35
41
  #
36
42
  # @return [Dry::Types::Constructor]
@@ -68,4 +74,5 @@ module ROM
68
74
  Coercible::JSONHash = Coercible.JSONHash
69
75
  Coercible::HashJSON = Coercible.HashJSON
70
76
  end
77
+ # rubocop:enable Naming/MethodName
71
78
  end
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ROM
2
4
  module Core
3
- VERSION = '4.2.1'.freeze
5
+ VERSION = '5.0.0'
4
6
  end
5
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rom-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.1
4
+ version: 5.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Solnica
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-05 00:00:00.000000000 Z
11
+ date: 2019-04-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.0'
19
+ version: '1.1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.0'
26
+ version: '1.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: dry-core
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.3'
33
+ version: '0.4'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0.3'
40
+ version: '0.4'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: dry-inflector
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0.6'
61
+ version: '0.7'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0.6'
68
+ version: '0.7'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: dry-equalizer
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -86,48 +86,48 @@ dependencies:
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 0.12.1
89
+ version: '1.0'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 0.12.1
96
+ version: '1.0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: dry-initializer
98
+ name: dry-struct
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '2.0'
103
+ version: '1.0'
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '2.0'
110
+ version: '1.0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: rom-mapper
112
+ name: dry-initializer
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '1.2'
117
+ version: '3.0'
118
118
  - - ">="
119
119
  - !ruby/object:Gem::Version
120
- version: 1.2.1
120
+ version: 3.0.1
121
121
  type: :runtime
122
122
  prerelease: false
123
123
  version_requirements: !ruby/object:Gem::Requirement
124
124
  requirements:
125
125
  - - "~>"
126
126
  - !ruby/object:Gem::Version
127
- version: '1.2'
127
+ version: '3.0'
128
128
  - - ">="
129
129
  - !ruby/object:Gem::Version
130
- version: 1.2.1
130
+ version: 3.0.1
131
131
  - !ruby/object:Gem::Dependency
132
132
  name: rake
133
133
  requirement: !ruby/object:Gem::Requirement
@@ -218,12 +218,22 @@ files:
218
218
  - lib/rom/gateway.rb
219
219
  - lib/rom/global.rb
220
220
  - lib/rom/global/plugin_dsl.rb
221
+ - lib/rom/header.rb
222
+ - lib/rom/header/attribute.rb
221
223
  - lib/rom/initializer.rb
222
224
  - lib/rom/lint/enumerable_dataset.rb
223
225
  - lib/rom/lint/gateway.rb
224
226
  - lib/rom/lint/linter.rb
225
227
  - lib/rom/lint/spec.rb
226
228
  - lib/rom/lint/test.rb
229
+ - lib/rom/mapper.rb
230
+ - lib/rom/mapper/attribute_dsl.rb
231
+ - lib/rom/mapper/builder.rb
232
+ - lib/rom/mapper/configuration_plugin.rb
233
+ - lib/rom/mapper/dsl.rb
234
+ - lib/rom/mapper/mapper_dsl.rb
235
+ - lib/rom/mapper/model_dsl.rb
236
+ - lib/rom/mapper_compiler.rb
227
237
  - lib/rom/mapper_registry.rb
228
238
  - lib/rom/memory.rb
229
239
  - lib/rom/memory/associations.rb
@@ -239,6 +249,8 @@ files:
239
249
  - lib/rom/memory/schema.rb
240
250
  - lib/rom/memory/storage.rb
241
251
  - lib/rom/memory/types.rb
252
+ - lib/rom/model_builder.rb
253
+ - lib/rom/open_struct.rb
242
254
  - lib/rom/pipeline.rb
243
255
  - lib/rom/plugin.rb
244
256
  - lib/rom/plugin_base.rb
@@ -248,6 +260,8 @@ files:
248
260
  - lib/rom/plugins/relation/instrumentation.rb
249
261
  - lib/rom/plugins/relation/registry_reader.rb
250
262
  - lib/rom/plugins/schema/timestamps.rb
263
+ - lib/rom/processor.rb
264
+ - lib/rom/processor/transproc.rb
251
265
  - lib/rom/registry.rb
252
266
  - lib/rom/relation.rb
253
267
  - lib/rom/relation/class_interface.rb
@@ -277,11 +291,14 @@ files:
277
291
  - lib/rom/setup/finalize/finalize_commands.rb
278
292
  - lib/rom/setup/finalize/finalize_mappers.rb
279
293
  - lib/rom/setup/finalize/finalize_relations.rb
294
+ - lib/rom/struct.rb
295
+ - lib/rom/struct_compiler.rb
280
296
  - lib/rom/support/configurable.rb
281
297
  - lib/rom/support/inflector.rb
282
298
  - lib/rom/support/memoizable.rb
283
299
  - lib/rom/support/notifications.rb
284
300
  - lib/rom/transaction.rb
301
+ - lib/rom/transformer.rb
285
302
  - lib/rom/types.rb
286
303
  - lib/rom/version.rb
287
304
  homepage: http://rom-rb.org
@@ -296,15 +313,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
296
313
  requirements:
297
314
  - - ">="
298
315
  - !ruby/object:Gem::Version
299
- version: 2.3.0
316
+ version: 2.4.0
300
317
  required_rubygems_version: !ruby/object:Gem::Requirement
301
318
  requirements:
302
319
  - - ">="
303
320
  - !ruby/object:Gem::Version
304
321
  version: '0'
305
322
  requirements: []
306
- rubyforge_project:
307
- rubygems_version: 2.7.3
323
+ rubygems_version: 3.0.3
308
324
  signing_key:
309
325
  specification_version: 4
310
326
  summary: Ruby Object Mapper