Class: ROM::Repository::Root

Inherits:
ROM::Repository show all
Defined in:
repository/lib/rom/repository/root.rb

Overview

A specialized repository type dedicated to work with a root relation

This repository type builds commands and aggregates for its root relation

Examples:

class UserRepo < ROM::Repository[:users]
  commands :create, update: :by_pk, delete: :by_pk
end

rom = ROM.container(:sql, 'sqlite::memory') do |conf|
  conf.default.create_table(:users) do
    primary_key :id
    column :name, String
  end
end

user_repo = UserRepo.new(rom)

user = user_repo.create(name: "Jane")

user_repo.update(user.id, name: "Jane Doe")

user_repo.delete(user.id)

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeRoot

Returns a new instance of Root.



59
60
61
62
# File 'repository/lib/rom/repository/root.rb', line 59

def initialize(*)
  super
  @root = set_relation(self.class.root)
end

Instance Attribute Details

#rootObject (readonly)



48
49
50
# File 'repository/lib/rom/repository/root.rb', line 48

def root
  @root
end

Class Method Details

.inherited(klass) ⇒ Object

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.

Sets descendant root relation



53
54
55
56
# File 'repository/lib/rom/repository/root.rb', line 53

def self.inherited(klass)
  super
  klass.root(root)
end

.rootSymbol .root(identifier) ⇒ Symbol

Get or set repository root relation identifier

This method is automatically used when you define a class using MyRepo[:rel_identifier] shortcut

Overloads:

  • .rootSymbol

    Return root relation identifier

    Returns:

    • (Symbol)
  • .root(identifier) ⇒ Symbol

    Set root relation identifier

    Returns:

    • (Symbol)


44
# File 'repository/lib/rom/repository/root.rb', line 44

defines :root