diff --git a/link-api/Gemfile b/link-api/Gemfile index b61e3ce..6792d5d 100644 --- a/link-api/Gemfile +++ b/link-api/Gemfile @@ -20,6 +20,8 @@ gem 'iso639-validator' # Use property sets for Link Instance settings gem 'property_sets' +gem 'will_paginate', '~> 3.1.0' + # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder # gem 'jbuilder', '~> 2.5' # Use Redis adapter to run Action Cable in production diff --git a/link-api/Gemfile.lock b/link-api/Gemfile.lock index 8828ea9..a882246 100644 --- a/link-api/Gemfile.lock +++ b/link-api/Gemfile.lock @@ -217,6 +217,7 @@ GEM websocket-driver (0.7.0) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.3) + will_paginate (3.1.7) PLATFORMS ruby @@ -241,6 +242,7 @@ DEPENDENCIES spring-commands-rspec spring-watcher-listen (~> 2.0.0) tzinfo-data + will_paginate (~> 3.1.0) RUBY VERSION ruby 2.5.1p57 diff --git a/link-api/app/controllers/api/contacts_controller.rb b/link-api/app/controllers/api/contacts_controller.rb index bec69cb..8c980c2 100644 --- a/link-api/app/controllers/api/contacts_controller.rb +++ b/link-api/app/controllers/api/contacts_controller.rb @@ -18,7 +18,7 @@ class ContactsController < ApplicationController def index @contacts = current_link_instance.contacts - render json: @contacts + render json: Api::Paginate::paginate(params[:page], @contacts) end # GET /api/contacts/1 diff --git a/link-api/app/controllers/api/holiday_schedules_controller.rb b/link-api/app/controllers/api/holiday_schedules_controller.rb index c931719..c64949b 100644 --- a/link-api/app/controllers/api/holiday_schedules_controller.rb +++ b/link-api/app/controllers/api/holiday_schedules_controller.rb @@ -19,7 +19,7 @@ class HolidaySchedulesController < ApplicationController def index @holiday_schedules = current_link_instance.holiday_schedules - render json: @holiday_schedules + render json: Api::Paginate::paginate(params[:page], @holiday_schedules) end # GET /holiday_schedules/1 diff --git a/link-api/app/controllers/api/languages_controller.rb b/link-api/app/controllers/api/languages_controller.rb index 1c6faad..25e79a7 100644 --- a/link-api/app/controllers/api/languages_controller.rb +++ b/link-api/app/controllers/api/languages_controller.rb @@ -8,7 +8,7 @@ class LanguagesController < ApplicationController def index @languages = current_link_instance.languages - render json: @languages + render json: Api::Paginate::paginate(params[:page], @languages) end # GET /api/languages/1 diff --git a/link-api/app/controllers/api/locations_controller.rb b/link-api/app/controllers/api/locations_controller.rb index 0a43585..0d32926 100644 --- a/link-api/app/controllers/api/locations_controller.rb +++ b/link-api/app/controllers/api/locations_controller.rb @@ -17,7 +17,7 @@ class Api::LocationsController < ApplicationController def index @locations = current_link_instance.locations.all - render json: @locations + render json: Api::Paginate::paginate(params[:page], @locations) end # GET /locations/1 diff --git a/link-api/app/controllers/api/organizations_controller.rb b/link-api/app/controllers/api/organizations_controller.rb index d2a1515..b0de716 100644 --- a/link-api/app/controllers/api/organizations_controller.rb +++ b/link-api/app/controllers/api/organizations_controller.rb @@ -17,9 +17,9 @@ class Api::OrganizationsController < ApplicationController # GET /organizations def index - @organizations = current_link_instance.organizations.all + @organizations = current_link_instance.organizations - render json: @organizations + render json: Api::Paginate::paginate(params[:page], @organizations) end # GET /organizations/1 diff --git a/link-api/app/controllers/api/paginate.rb b/link-api/app/controllers/api/paginate.rb new file mode 100644 index 0000000..5b55c2a --- /dev/null +++ b/link-api/app/controllers/api/paginate.rb @@ -0,0 +1,13 @@ +module Api::Paginate + class << self + def paginate(page, xs, order_query = 'created_at DESC') + entity = xs.name.downcase + pages = xs.order(order_query).page(page) + + { + "#{entity}_count" => pages.total_entries, + entity.pluralize => pages + } + end + end +end diff --git a/link-api/app/controllers/api/phones_controller.rb b/link-api/app/controllers/api/phones_controller.rb index 9ee3976..a5e90c4 100644 --- a/link-api/app/controllers/api/phones_controller.rb +++ b/link-api/app/controllers/api/phones_controller.rb @@ -21,7 +21,7 @@ class PhonesController < ApplicationController def index @phones = current_link_instance.phones - render json: @phones + render json: Api::Paginate::paginate(params[:page], @phones) end # GET /phones/1 diff --git a/link-api/app/controllers/api/physical_addresses_controller.rb b/link-api/app/controllers/api/physical_addresses_controller.rb index 9fddc79..fa5e39a 100644 --- a/link-api/app/controllers/api/physical_addresses_controller.rb +++ b/link-api/app/controllers/api/physical_addresses_controller.rb @@ -19,7 +19,7 @@ class PhysicalAddressesController < ApplicationController def index @physical_addresses = current_link_instance.physical_addresses - render json: @physical_addresses + render json: Api::Paginate::paginate(params[:page], @physical_addresses) end # GET /physical_addresses/1 diff --git a/link-api/app/controllers/api/postal_addresses_controller.rb b/link-api/app/controllers/api/postal_addresses_controller.rb index 5942cdf..4032588 100644 --- a/link-api/app/controllers/api/postal_addresses_controller.rb +++ b/link-api/app/controllers/api/postal_addresses_controller.rb @@ -19,7 +19,7 @@ class PostalAddressesController < ApplicationController def index @postal_addresses = current_link_instance.postal_addresses - render json: @postal_addresses + render json: Api::Paginate::paginate(params[:page], @postal_addresses) end # GET /postal_addresses/1 diff --git a/link-api/app/controllers/api/programs_controller.rb b/link-api/app/controllers/api/programs_controller.rb index 2fe1f15..5153c7d 100644 --- a/link-api/app/controllers/api/programs_controller.rb +++ b/link-api/app/controllers/api/programs_controller.rb @@ -13,7 +13,7 @@ class Api::ProgramsController < ApplicationController def index @programs = current_link_instance.programs.all - render json: @programs + render json: Api::Paginate::paginate(params[:page], @programs) end # GET /programs/1 diff --git a/link-api/app/controllers/api/regular_schedules_controller.rb b/link-api/app/controllers/api/regular_schedules_controller.rb index 9700c6e..bd71a83 100644 --- a/link-api/app/controllers/api/regular_schedules_controller.rb +++ b/link-api/app/controllers/api/regular_schedules_controller.rb @@ -17,7 +17,7 @@ class RegularSchedulesController < ApplicationController def index @regular_schedules = current_link_instance.regular_schedules - render json: @regular_schedules + render json: Api::Paginate::paginate(params[:page], @regular_schedules) end # GET /regular_schedules/1 diff --git a/link-api/app/controllers/api/service_at_locations_controller.rb b/link-api/app/controllers/api/service_at_locations_controller.rb index 1251456..8dabbfb 100644 --- a/link-api/app/controllers/api/service_at_locations_controller.rb +++ b/link-api/app/controllers/api/service_at_locations_controller.rb @@ -14,7 +14,7 @@ class ServiceAtLocationsController < ApplicationController def index @service_at_locations = current_link_instance.service_at_locations.all - render json: @service_at_locations + render json: Api::Paginate::paginate(params[:page], @service_at_locations) end # GET /api/service_at_locations/1 diff --git a/link-api/app/controllers/api/services_controller.rb b/link-api/app/controllers/api/services_controller.rb index 62cfbfd..d89f147 100644 --- a/link-api/app/controllers/api/services_controller.rb +++ b/link-api/app/controllers/api/services_controller.rb @@ -25,7 +25,7 @@ class ServicesController < ApplicationController def index @services = current_link_instance.services - render json: @services + render json: Api::Paginate::paginate(params[:page], @services) end # GET /api/services/1