Sha256: 1c0f2232b1f1cc88e9b72503d0abdbd3011973c37c7d6a05df2fbee163448bb0
Contents?: true
Size: 1.32 KB
Versions: 3
Compression:
Stored size: 1.32 KB
Contents
require 'rom/support/options' require 'rom/repository/ext/relation' require 'rom/repository/mapper_builder' require 'rom/repository/loading_proxy' module ROM class Repository < Gateway # Abstract repository class to inherit from # # TODO: rename this to Repository once deprecated Repository from rom core is gone # # @api public class Base # :trollface: include Options option :mapper_builder, reader: true, default: proc { MapperBuilder.new } # Define which relations your repository is going to use # # @example # class MyRepo < ROM::Repository::Base # relations :users, :tasks # end # # my_repo = MyRepo.new(rom_env) # # my_repo.users # my_repo.tasks # # @return [Array<Symbol>] # # @api public def self.relations(*names) if names.any? attr_reader(*names) @relations = names else @relations end end # @api private def initialize(env, options = {}) super self.class.relations.each do |name| proxy = LoadingProxy.new( env.relation(name), name: name, mapper_builder: mapper_builder ) instance_variable_set("@#{name}", proxy) end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
rom-repository-0.1.0 | lib/rom/repository/base.rb |
rom-repository-0.0.2 | lib/rom/repository/base.rb |
rom-repository-0.0.1 | lib/rom/repository/base.rb |