Sha256: 292c31846ca3b12304731e0d9d25306a03c6abe9590ded1d471b91829c7ff993

Contents?: true

Size: 1.92 KB

Versions: 16

Compression:

Stored size: 1.92 KB

Contents

# frozen_string_literal: true

require 'rom/memory/types'
require 'rom/memory/schema'

module ROM
  module Memory
    # Relation subclass for memory adapter
    #
    # @example
    #   class Users < ROM::Relation[:memory]
    #   end
    #
    # @api public
    class Relation < ROM::Relation
      include Enumerable
      include Memory

      adapter :memory
      schema_class Memory::Schema

      # @!method take(amount)
      #   @param (see Dataset#take)
      #   @return [Relation]
      #   @see Dataset#take
      #
      # @!method join(*args)
      #   @param (see Dataset#take)
      #   @return [Relation]
      #   @see Dataset#join
      #
      # @!method restrict(criteria = nil)
      #   @param (see Dataset#restrict)
      #   @return [Relation]
      #   @see Dataset#restrict
      #
      # @!method order(*fields)
      #   @param (see Dataset#order)
      #   @return [Relation]
      #   @see Dataset#order
      forward :take, :join, :restrict, :order

      # Project a relation with provided attribute names
      #
      # @param [*Array] names A list with attribute names
      #
      # @return [Memory::Relation]
      #
      # @api public
      def project(*names)
        schema.project(*names).(self)
      end

      # Rename attributes in a relation
      #
      # @api public
      def rename(mapping)
        schema.rename(mapping).(self)
      end

      # Insert tuples into the relation
      #
      # @example
      #   users.insert(name: 'Jane')
      #
      # @return [Relation]
      #
      # @api public
      def insert(*args)
        dataset.insert(*args)
        self
      end
      alias_method :<<, :insert

      # Delete tuples from the relation
      #
      # @example
      #   users.insert(name: 'Jane')
      #   users.delete(name: 'Jane')
      #
      # @return [Relation]
      #
      # @api public
      def delete(*args)
        dataset.delete(*args)
        self
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
rom-core-5.4.0 lib/rom/memory/relation.rb
rom-core-5.3.2 lib/rom/memory/relation.rb
rom-core-5.3.1 lib/rom/memory/relation.rb
rom-core-5.3.0 lib/rom/memory/relation.rb
rom-core-5.2.6 lib/rom/memory/relation.rb
rom-core-5.2.5 lib/rom/memory/relation.rb
rom-core-5.2.4 lib/rom/memory/relation.rb
rom-core-5.2.3 lib/rom/memory/relation.rb
rom-core-5.2.2 lib/rom/memory/relation.rb
rom-core-5.2.1 lib/rom/memory/relation.rb
rom-core-5.1.2 lib/rom/memory/relation.rb
rom-core-5.1.1 lib/rom/memory/relation.rb
rom-core-5.1.0 lib/rom/memory/relation.rb
rom-core-5.0.2 lib/rom/memory/relation.rb
rom-core-5.0.1 lib/rom/memory/relation.rb
rom-core-5.0.0 lib/rom/memory/relation.rb