Sha256: a6d2287b402e426b51fe369cc1f7fb77b0b73c9baef86ce834d07d8c5c5ce0d8

Contents?: true

Size: 1.5 KB

Versions: 6

Compression:

Stored size: 1.5 KB

Contents

require 'rom/setup_dsl/relation'

require 'rom/setup_dsl/mapper_dsl'
require 'rom/setup_dsl/command_dsl'

module ROM
  # This extends Setup class with the DSL methods
  #
  # @api public
  class Setup
    # Relation definition DSL
    #
    # @example
    #
    #   setup.relation(:users) do
    #     def names
    #       project(:name)
    #     end
    #   end
    #
    # @api public
    def relation(name, options = {}, &block)
      klass_opts = { adapter: default_adapter }.merge(options)
      klass = Relation.build_class(name, klass_opts)
      klass.class_eval(&block) if block
      klass
    end

    # Mapper definition DSL
    #
    # @example
    #
    #   setup.mappers do
    #     define(:users) do
    #       model name: 'User'
    #     end
    #
    #     define(:names, parent: :users) do
    #       exclude :id
    #     end
    #   end
    #
    # @api public
    def mappers(&block)
      MapperDSL.new(self, &block)
    end

    # Command definition DSL
    #
    # @example
    #
    #   setup.commands(:users) do
    #     define(:create) do
    #       input NewUserParams
    #       validator NewUserValidator
    #       result :one
    #     end
    #
    #     define(:update) do
    #       input UserParams
    #       validator UserValidator
    #       result :many
    #     end
    #
    #     define(:delete) do
    #       result :many
    #     end
    #   end
    #
    # @api public
    def commands(name, &block)
      CommandDSL.new(name, default_adapter, &block)
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
rom-0.9.0.rc1 lib/rom/setup_dsl/setup.rb
rom-0.9.0.beta1 lib/rom/setup_dsl/setup.rb
rom-0.8.1 lib/rom/setup_dsl/setup.rb
rom-0.8.0 lib/rom/setup_dsl/setup.rb
rom-0.7.1 lib/rom/setup_dsl/setup.rb
rom-0.7.0 lib/rom/setup_dsl/setup.rb