Sha256: 3cb28bd019d2990254c40a79aaa6a61b1cae96fa720060081c9d0b538bf1e74a

Contents?: true

Size: 859 Bytes

Versions: 60

Compression:

Stored size: 859 Bytes

Contents

module ClarkKent
	class ReportResult
		include Enumerable

		def initialize(arel_query, params)
			@arel_query = arel_query
			@params = params
		end

		def paginated_query
			if @params.has_key? :page and @params.has_key? :per
				page = @params[:page] || 1
				@arel_query.offset((page.to_i - 1) * @params[:per]).limit(@params[:per])
			else
				@arel_query
			end
		end

		def current_page
			@params[:page]
		end

		def per_page
			@params[:per]
		end

		def query
			@arel_query
		end

		def total_count
			unless defined?(@total_count)
				results = results_for(@arel_query.to_sql)
				@total_count = results.num_tuples
			end

			@total_count
		end

		def rows
			results_for(paginated_query.to_sql)
		end

		def each(&block)
			rows.each(&block)
		end

		private

			def results_for(sql)
				Report.connection.raw_connection.exec(sql)
			end

	end
end

Version data entries

60 entries across 60 versions & 1 rubygems

Version Path
clark_kent-0.11.3 app/models/clark_kent/report_result.rb
clark_kent-0.11.2 app/models/clark_kent/report_result.rb
clark_kent-0.11.1 app/models/clark_kent/report_result.rb
clark_kent-0.11.0 app/models/clark_kent/report_result.rb
clark_kent-0.10.4 app/models/clark_kent/report_result.rb
clark_kent-0.10.2 app/models/clark_kent/report_result.rb
clark_kent-0.10.1 app/models/clark_kent/report_result.rb
clark_kent-0.10.0 app/models/clark_kent/report_result.rb
clark_kent-0.9.9 app/models/clark_kent/report_result.rb
clark_kent-0.9.8 app/models/clark_kent/report_result.rb
clark_kent-0.9.7 app/models/clark_kent/report_result.rb
clark_kent-0.9.6 app/models/clark_kent/report_result.rb
clark_kent-0.9.5 app/models/clark_kent/report_result.rb
clark_kent-0.9.4 app/models/clark_kent/report_result.rb
clark_kent-0.9.2 app/models/clark_kent/report_result.rb
clark_kent-0.9.1 app/models/clark_kent/report_result.rb
clark_kent-0.9.0 app/models/clark_kent/report_result.rb
clark_kent-0.8.11 app/models/clark_kent/report_result.rb
clark_kent-0.8.10 app/models/clark_kent/report_result.rb
clark_kent-0.8.9 app/models/clark_kent/report_result.rb