Sha256: 3e0270a13cea2bcf2bfe41fbb5aa21a153e176bb7c25f2fa531a795e3b8b26d9

Contents?: true

Size: 1.31 KB

Versions: 2

Compression:

Stored size: 1.31 KB

Contents

# rubocop:disable Naming/MethodName
# rubocop:disable Naming/UncommunicativeMethodParamName
# rubocop:disable Metrics/ParameterLists

module Arel
  module Nodes
    Arel::Table.class_eval do
      # postgres only: https://www.postgresql.org/docs/9.5/sql-select.html
      attr_accessor :only
      # postgres only: https://www.postgresql.org/docs/9.5/ddl-schemas.html
      attr_accessor :schema_name
      # postgres only: https://www.postgresql.org/docs/9.1/catalog-pg-class.html
      attr_accessor :relpersistence

      alias_method :old_initialize, :initialize
      def initialize(
        name,
        as: nil,
        type_caster: nil,
        only: false,
        schema_name: nil,
        relpersistence: 'p'
      )
        @only = only
        @schema_name = schema_name
        @relpersistence = relpersistence

        old_initialize(name, as: as, type_caster: type_caster)
      end
    end
  end

  module Visitors
    class ToSql
      alias old_visit_Arel_Table visit_Arel_Table
      def visit_Arel_Table(o, collector)
        collector << 'ONLY ' if o.only

        collector << "\"#{o.schema_name}\"." if o.schema_name

        old_visit_Arel_Table(o, collector)
      end
    end
  end
end

# rubocop:enable Naming/MethodName
# rubocop:enable Naming/UncommunicativeMethodParamName
# rubocop:enable Metrics/ParameterLists

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
arel_toolkit-0.3.0 lib/arel/extensions/table.rb
arel_toolkit-0.2.0 lib/arel/extensions/table.rb