rom-core 4.2.1 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
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