Module: ROM::SQL

Extended by:
Dry::Core::Extensions
Included in:
Relation
Defined in:
lib/rom/sql/dsl.rb,
lib/rom/sql/wrap.rb,
lib/rom/sql/error.rb,
lib/rom/sql/index.rb,
lib/rom/sql/types.rb,
lib/rom/sql/errors.rb,
lib/rom/sql/schema.rb,
lib/rom/sql/gateway.rb,
lib/rom/sql/version.rb,
lib/rom/sql/function.rb,
lib/rom/sql/join_dsl.rb,
lib/rom/sql/relation.rb,
lib/rom/sql/type_dsl.rb,
lib/rom/sql/attribute.rb,
lib/rom/sql/group_dsl.rb,
lib/rom/sql/migration.rb,
lib/rom/sql/order_dsl.rb,
lib/rom/sql/extensions.rb,
lib/rom/sql/schema/dsl.rb,
lib/rom/sql/foreign_key.rb,
lib/rom/sql/transaction.rb,
lib/rom/sql/plugin/nullify.rb,
lib/rom/sql/projection_dsl.rb,
lib/rom/sql/commands/create.rb,
lib/rom/sql/commands/delete.rb,
lib/rom/sql/commands/update.rb,
lib/rom/sql/mapper_compiler.rb,
lib/rom/sql/restriction_dsl.rb,
lib/rom/sql/schema/inferrer.rb,
lib/rom/sql/type_extensions.rb,
lib/rom/sql/type_serializer.rb,
lib/rom/sql/migration/runner.rb,
lib/rom/sql/migration/writer.rb,
lib/rom/sql/relation/reading.rb,
lib/rom/sql/relation/writing.rb,
lib/rom/sql/schema/index_dsl.rb,
lib/rom/sql/associations/core.rb,
lib/rom/sql/plugin/associates.rb,
lib/rom/sql/plugin/pagination.rb,
lib/rom/sql/attribute_aliasing.rb,
lib/rom/sql/attribute_wrapping.rb,
lib/rom/sql/migration/migrator.rb,
lib/rom/sql/migration/recorder.rb,
lib/rom/sql/schema/type_builder.rb,
lib/rom/sql/associations/self_ref.rb,
lib/rom/sql/migration/schema_diff.rb,
lib/rom/sql/commands/error_wrapper.rb,
lib/rom/sql/associations/one_to_one.rb,
lib/rom/sql/extensions/sqlite/types.rb,
lib/rom/sql/migration/inline_runner.rb,
lib/rom/sql/associations/many_to_one.rb,
lib/rom/sql/associations/one_to_many.rb,
lib/rom/sql/associations/many_to_many.rb,
lib/rom/sql/extensions/postgres/types.rb,
lib/rom/sql/schema/attributes_inferrer.rb,
lib/rom/sql/extensions/postgres/commands.rb,
lib/rom/sql/extensions/mysql/type_builder.rb,
lib/rom/sql/extensions/postgres/types/json.rb,
lib/rom/sql/extensions/sqlite/type_builder.rb,
lib/rom/sql/associations/one_to_one_through.rb,
lib/rom/sql/extensions/postgres/types/array.rb,
lib/rom/sql/extensions/postgres/types/ltree.rb,
lib/rom/sql/extensions/postgres/types/range.rb,
lib/rom/sql/extensions/rails_log_subscriber.rb,
lib/rom/sql/extensions/postgres/type_builder.rb,
lib/rom/sql/extensions/postgres/types/network.rb,
lib/rom/sql/extensions/postgres/type_serializer.rb,
lib/rom/sql/extensions/postgres/types/geometric.rb,
lib/rom/sql/extensions/postgres/types/array_types.rb,
lib/rom/sql/extensions/active_support_notifications.rb

Defined Under Namespace

Modules: ActiveSupportInstrumentation, Associations, Commands, Migration, MySQL, Plugin, Postgres, SQLite, TypeExtensions, Types Classes: Attribute, Error, Function, Gateway, MapperCompiler, ProjectionDSL, RailsLogSubscriber, Relation, Schema, TypeDSL, Wrap

Constant Summary collapse

MissingConfigurationError =
Class.new(StandardError)
NoAssociationError =
Class.new(StandardError)
DatabaseError =
Class.new(Error)
ConstraintError =
Class.new(Error)
NotNullConstraintError =
Class.new(ConstraintError)
UniqueConstraintError =
Class.new(ConstraintError)
ForeignKeyConstraintError =
Class.new(ConstraintError)
CheckConstraintError =
Class.new(ConstraintError)
UnknownDBTypeError =
Class.new(StandardError)
MissingPrimaryKeyError =
Class.new(StandardError)
MigrationError =
Class.new(StandardError)
UnsupportedConversion =
Class.new(MigrationError)
ERROR_MAP =
{
  Sequel::DatabaseError => DatabaseError,
  Sequel::ConstraintViolation => ConstraintError,
  Sequel::NotNullConstraintViolation => NotNullConstraintError,
  Sequel::UniqueConstraintViolation => UniqueConstraintError,
  Sequel::ForeignKeyConstraintViolation => ForeignKeyConstraintError,
  Sequel::CheckConstraintViolation => CheckConstraintError
}.freeze
VERSION =
'3.2.0'.freeze

Class Method Summary collapse

Class Method Details

.migration(container, gateway) ⇒ Object

Trap for the migration runner. By default migrations are bound to the gateway you're using to run them. You also can explicitly pass a configuration object and a gateway name but this normally won't be not required.

Examples:

# Ordinary migration
ROM::SQL.migration do
  change do
    create_table(:users) do
      primary_key :id
      String :name
    end
  end
end
# Providing a config
rom = ROM::Configuration.new(
  default: [:sql, 'sqlite::memory'],
  other: [:sql, 'postgres://localhost/test']
)

# default gateway migrations
ROM::SQL.migration(rom) do
  change do
    create_table(:users) do
      primary_key :id
      String :name
    end
  end
end

# other gateway migrations
ROM::SQL.migration(rom, :other) do
  change do
    create_table(:users) do
      primary_key :id
      String :name
    end
  end
end

Parameters:

  • container (ROM::Container)

    The container instance used for accessing gateways

  • gateway (Symbol)

    The gateway name, :default by default



57
58
59
60
61
62
63
64
# File 'lib/rom/sql/migration.rb', line 57

def migration(*args, &block)
  if args.any?
    container, gateway, * = args
    with_gateway(container.gateways[gateway || :default]) { migration(&block) }
  else
    current_gateway.migration(&block)
  end
end