Class: ROM::Repository
- Inherits:
-
Object
- Object
- ROM::Repository
- Extended by:
- Dry::Core::Cache, Dry::Core::ClassAttributes, Initializer, ClassInterface
- Defined in:
- lib/rom/repository.rb,
lib/rom/repository/root.rb,
lib/rom/repository/class_interface.rb,
lib/rom/repository/relation_reader.rb
Overview
Abstract repository class to inherit from
A repository provides access to composable relations and commands. Its job is to provide application-specific data that is already materialized, so that relations don't leak into your application layer.
Typically, you're going to work with Repository::Root that is configured to use a single relation as its root, and compose aggregates and use changesets and commands against the root relation.
Direct Known Subclasses
Defined Under Namespace
Modules: ClassInterface Classes: RelationReader, Root
Instance Attribute Summary collapse
-
#auto_struct ⇒ Boolean
readonly
The container used to set up a repo.
-
#container ⇒ ROM::Container
readonly
The container used to set up a repo.
- #relations ⇒ Object readonly
-
#struct_namespace ⇒ Module, Class
readonly
The namespace for auto-generated structs.
Class Method Summary collapse
-
.[](name) ⇒ Class
extended
from ClassInterface
Create a root-repository class and set its root relation.
-
.auto_struct ⇒ Object
Get or set struct namespace.
-
.commands(*names, mapper: nil, use: nil, plugins_options: EMPTY_HASH, **opts) ⇒ Array<Symbol>
extended
from ClassInterface
Defines command methods on a root repository.
-
.inherited(klass) ⇒ Object
extended
from ClassInterface
private
Inherits configured relations and commands.
-
.new(container = nil, **options) ⇒ Object
extended
from ClassInterface
Initialize a new repository object, establishing configured relation proxies from the passed container.
-
.relation_reader ⇒ RelationReader
Get or set relation reader module.
- .use(plugin, **options) ⇒ Object extended from ClassInterface
Instance Method Summary collapse
-
#initialize ⇒ Repository
constructor
private
Initializes a new repository object.
-
#inspect ⇒ String
Return a string representation of a repository object.
-
#transaction(gateway: :default, **opts, &block) ⇒ Object
Open a database transaction.
Constructor Details
#initialize ⇒ Repository
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Initializes a new repository object
106 107 108 109 |
# File 'lib/rom/repository.rb', line 106 def initialize(*) super @relations = {} end |
Instance Attribute Details
#auto_struct ⇒ Boolean (readonly)
Returns The container used to set up a repo.
97 |
# File 'lib/rom/repository.rb', line 97 option :auto_struct, default: -> { self.class.auto_struct } |
#container ⇒ ROM::Container (readonly)
Returns The container used to set up a repo.
89 |
# File 'lib/rom/repository.rb', line 89 option :container, allow: ROM::Container |
#relations ⇒ Object (readonly)
101 102 103 |
# File 'lib/rom/repository.rb', line 101 def relations @relations end |
#struct_namespace ⇒ Module, Class (readonly)
Returns The namespace for auto-generated structs.
93 |
# File 'lib/rom/repository.rb', line 93 option :struct_namespace, default: -> { self.class.struct_namespace } |
Class Method Details
.[](name) ⇒ Class Originally defined in module ClassInterface
Create a root-repository class and set its root relation
.auto_struct ⇒ Object
Get or set struct namespace
72 |
# File 'lib/rom/repository.rb', line 72 defines :auto_struct |
.commands(*names, mapper: nil, use: nil, plugins_options: EMPTY_HASH, **opts) ⇒ Array<Symbol> Originally defined in module ClassInterface
Defines command methods on a root repository
.inherited(klass) ⇒ Object Originally defined in module ClassInterface
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Inherits configured relations and commands
#new(container, **options) ⇒ Object #new(**options) ⇒ Object Originally defined in module ClassInterface
Initialize a new repository object, establishing configured relation proxies from the passed container
.relation_reader ⇒ RelationReader
Get or set relation reader module
83 |
# File 'lib/rom/repository.rb', line 83 defines :relation_reader |
.use(plugin, **options) ⇒ Object Originally defined in module ClassInterface
Instance Method Details
#inspect ⇒ String
Return a string representation of a repository object
156 157 158 |
# File 'lib/rom/repository.rb', line 156 def inspect %(#<#{self.class} struct_namespace=#{struct_namespace} auto_struct=#{auto_struct}>) end |
#transaction(gateway: :default, **opts, &block) ⇒ Object
Open a database transaction
147 148 149 |
# File 'lib/rom/repository.rb', line 147 def transaction(gateway: :default, **opts, &block) container.gateways[gateway].transaction(**opts, &block) end |