Sha256: 58f29ad54e29776def197e8f09cb7933fdba9e33b9aad83e634ab02e1be4e32d

Contents?: true

Size: 542 Bytes

Versions: 4

Compression:

Stored size: 542 Bytes

Contents

# frozen_string_literal: true

module SQLRunner
  class Query
    module Model
      def self.activate(target, model)
        target.singleton_class.class_eval do
          attr_accessor :model
        end

        target.model = model
        target.singleton_class.prepend self
      end

      def call(**bind_vars)
        result = super(**bind_vars)
        return unless result
        return model.new(result) if result.is_a?(Hash)

        result.to_a.map do |attrs|
          model.new(attrs)
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
sql_runner-0.4.1 lib/sql_runner/query/model.rb
sql_runner-0.4.0 lib/sql_runner/query/model.rb
sql_runner-0.3.0 lib/sql_runner/query/model.rb
sql_runner-0.2.0 lib/sql_runner/query/model.rb