Skip to content

Commit c1983f9

Browse files
committed
Add support for Sequel, which has it's own paginate method with a different method signature
1 parent d46e18b commit c1983f9

File tree

4 files changed

+41
-1
lines changed

4 files changed

+41
-1
lines changed

Gemfile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,8 @@ gemspec
66
gem 'kaminari', require: false
77
gem 'will_paginate', require: false
88

9+
gem 'sqlite3', require: false
10+
gem 'sequel', require: false
11+
912
gem 'rake', require: false
1013
gem 'coveralls', require: false

api-pagination.gemspec

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,6 @@ Gem::Specification.new do |s|
2020
s.add_development_dependency 'grape'
2121
s.add_development_dependency 'railties', '>= 3.0.0'
2222
s.add_development_dependency 'actionpack', '>= 3.0.0'
23+
s.add_development_dependency 'sqlite3'
24+
s.add_development_dependency 'sequel', '>= 4.9.0'
2325
end

lib/api-pagination.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,11 @@ def paginate(collection, options = {})
1414
collection = Kaminari.paginate_array(collection) if collection.is_a?(Array)
1515
collection.page(options[:page]).per(options[:per_page])
1616
when :will_paginate
17-
collection.paginate(:page => options[:page], :per_page => options[:per_page])
17+
if defined?(Sequel::Dataset) && collection.kind_of?(Sequel::Dataset)
18+
collection.paginate(options[:page], options[:per_page])
19+
else
20+
collection.paginate(:page => options[:page], :per_page => options[:per_page])
21+
end
1822
end
1923
end
2024

spec/sequel_spec.rb

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
require 'spec_helper'
2+
3+
if ApiPagination.paginator == :will_paginate
4+
require 'sqlite3'
5+
require 'sequel'
6+
require 'will_paginate/sequel'
7+
8+
DB = Sequel.sqlite
9+
DB.extension :pagination
10+
DB.create_table :people do
11+
primary_key :id
12+
String :name
13+
end
14+
15+
describe 'Using will_paginate with Sequel' do
16+
let(:people) do
17+
DB[:people]
18+
end
19+
20+
before(:each) do
21+
people.insert(name: 'John')
22+
people.insert(name: 'Mary')
23+
end
24+
25+
it 'returns a Sequel::Dataset' do
26+
collection = ApiPagination.paginate(people)
27+
expect(collection.kind_of?(Sequel::Dataset)).to be_true
28+
end
29+
end
30+
end
31+

0 commit comments

Comments
 (0)