Sha256: a6eff6ad332e9310e771d66900546aee2359573c882fd944df8701fca555a16e

Contents?: true

Size: 1.01 KB

Versions: 8

Compression:

Stored size: 1.01 KB

Contents

require 'rack/passbook'

require 'sinatra/base'
require 'sinatra/param'

class Helios::Backend::Passbook < Sinatra::Base
  helpers Sinatra::Param

  def initialize(app, options = {}, &block)
    super(Rack::Passbook.new)
  end

  before do
    content_type :json
  end

  get '/passes' do
    param :q, String

    passes = Rack::Passbook::Pass.dataset
    passes = passes.filter("tsv @@ to_tsquery('english', ?)", "#{params[:q]}:*") if params[:q] and not params[:q].empty?

    if params[:page] or params[:per_page]
      param :page, Integer, default: 1, min: 1
      param :per_page, Integer, default: 100, in: (1..100)

      {
        passes: passes.limit(params[:per_page], (params[:page] - 1) * params[:per_page]).naked.all,
        page: params[:page],
        total: passes.count
      }.to_json
    else
      param :limit, Integer, default: 100, in: (1..100)
      param :offset, Integer, default: 0, min: 0

      {
        passes: passes.limit(params[:limit], params[:offset]).naked.all
      }.to_json
    end
  end
end

Version data entries

8 entries across 8 versions & 2 rubygems

Version Path
helios-0.4.1 ./lib/helios/backend/passbook.rb
helios-0.4.0 ./lib/helios/backend/passbook.rb
helios_aim-0.2.2 ./lib/helios/backend/passbook.rb
helios-0.3.0 ./lib/helios/backend/passbook.rb
helios-0.2.5 ./lib/helios/backend/passbook.rb
helios-0.2.4 ./lib/helios/backend/passbook.rb
helios-0.2.3 ./lib/helios/backend/passbook.rb
helios-0.2.2 ./lib/helios/backend/passbook.rb