Class: Jsonapi::QueryBuilder::BaseQuery
- Inherits:
-
Object
- Object
- Jsonapi::QueryBuilder::BaseQuery
- Includes:
- Mixins::Filter, Mixins::Include, Mixins::Paginate, Mixins::Sort
- Defined in:
- lib/jsonapi/query_builder/base_query.rb
Constant Summary
Constants included from Mixins::Sort
Mixins::Sort::UnpermittedSortParameters
Instance Attribute Summary collapse
-
#collection ⇒ Object
Returns the value of attribute collection.
-
#params ⇒ Object
Returns the value of attribute params.
Attributes included from Mixins::Paginate
Instance Method Summary collapse
- #find(id) ⇒ Object
- #find_by!(**kwargs) ⇒ Object
-
#initialize(collection, params) ⇒ BaseQuery
constructor
A new instance of BaseQuery.
-
#record ⇒ Object
Finds the record by the id parameter the class is instantiated with.
-
#results ⇒ ActiveRecord::Relation
A collection with eager loaded relationships based on include params, filtered, ordered and lastly, paginated.
Methods included from Mixins::Sort
Methods included from Mixins::Paginate
Methods included from Mixins::Include
Methods included from Mixins::Filter
Constructor Details
#initialize(collection, params) ⇒ BaseQuery
Returns a new instance of BaseQuery.
20 21 22 23 |
# File 'lib/jsonapi/query_builder/base_query.rb', line 20 def initialize(collection, params) @collection = collection @params = params.deep_symbolize_keys end |
Instance Attribute Details
#collection ⇒ Object
Returns the value of attribute collection.
16 17 18 |
# File 'lib/jsonapi/query_builder/base_query.rb', line 16 def collection @collection end |
#params ⇒ Object
Returns the value of attribute params.
16 17 18 |
# File 'lib/jsonapi/query_builder/base_query.rb', line 16 def params @params end |
Instance Method Details
#find(id) ⇒ Object
39 40 41 |
# File 'lib/jsonapi/query_builder/base_query.rb', line 39 def find(id) find_by! id: id end |
#find_by!(**kwargs) ⇒ Object
53 54 55 |
# File 'lib/jsonapi/query_builder/base_query.rb', line 53 def find_by!(**kwargs) add_includes(collection).find_by!(kwargs) end |
#record ⇒ Object
Finds the record by the id parameter the class is instantiated with
46 47 48 |
# File 'lib/jsonapi/query_builder/base_query.rb', line 46 def record find_by! id: params[:id] end |
#results ⇒ ActiveRecord::Relation
Note:
Pagination details are saved to an instance variable and can be accessed via the #pagination_details attribute reader
Returns A collection with eager loaded relationships based on include params, filtered, ordered and lastly, paginated.
28 29 30 31 32 33 34 |
# File 'lib/jsonapi/query_builder/base_query.rb', line 28 def results collection .yield_self(&method(:add_includes)) .yield_self(&method(:sort)) .yield_self(&method(:filter)) .yield_self(&method(:paginate)) end |