Class: Entities
- Inherits:
-
Object
- Object
- Entities
- Defined in:
- lib/schemaless_rest_api/entities.rb
Overview
Entities mapped by environment variables
Class Attribute Summary collapse
-
.models ⇒ Hash
Hash of models.
Class Method Summary collapse
-
.find_all(model, params) ⇒ Object
Find all values for given model querying via params.
- .page_data(model, params, values) ⇒ Object
- .query_from_params(params) ⇒ Object
Class Attribute Details
.models ⇒ Hash
Returns Hash of models.
10 11 12 |
# File 'lib/schemaless_rest_api/entities.rb', line 10 def models @models end |
Class Method Details
.find_all(model, params) ⇒ Object
Find all values for given model querying via params
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/schemaless_rest_api/entities.rb', line 39 def find_all(model, params) query = query_from_params params total_items = if query == {} Entities.models[model].values else Entities.models[model].values.find_all do |val| val[query.keys[0].to_s].to_s == query.values[0] end end pagination = page_data(model, params, total_items) skip = (pagination[:current_page] - 1) * pagination[:page_size] items = total_items.drop(skip).take(pagination[:page_size]) response = { _embedded: {}, pagination: pagination } response[:_embedded][model.to_sym] = items response end |
.page_data(model, params, values) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/schemaless_rest_api/entities.rb', line 12 def page_data(model, params, values) page = params[:page].to_i.positive? ? params[:page].to_i : 1 page_size = params[:page_size].to_i.positive? ? params[:page_size].to_i : 10 total_count = values.count total_pages = (total_count / page_size.to_f).ceil page_res = { current_page: page, page_size: page_size, total_count: total_count, total_pages: total_pages, _links: { self: { href: "/#{model}?page=#{page}&page_size=#{page_size}" } } } page_res[:_links][:next] = { href: "/#{model}?page=#{page + 1}&page_size=#{page_size}" } if page < total_pages page_res[:_links][:prev] = { href: "/#{model}?page=#{page - 1}&page_size=#{page_size}" } if page > 1 page_res end |
.query_from_params(params) ⇒ Object
31 32 33 34 35 36 |
# File 'lib/schemaless_rest_api/entities.rb', line 31 def query_from_params(params) query = params.dup query.delete(:page) query.delete(:page_size) query end |