lib/erp_integration/fulfil/query.rb in erp_integration-0.17.0 vs lib/erp_integration/fulfil/query.rb in erp_integration-0.18.0
- old
+ new
@@ -16,25 +16,35 @@
# So, there is no need to explicitly call `.to_json` on the `Query` instance.
#
# @example
# Faraday.post("/api-endpoint", Query.new([:id, 'product.id'], [WhereClause.new(key: :id, value: 100)]))
class Query
- attr_reader :fields, :filters
+ delegate :to_json, to: :to_h
+
+ attr_reader :fields, :filters, :offset, :limit
+
DEFAULT_FIELDS = %w[id].freeze
# @param fields [Array<String|Symbol>] A list of fields for Fulfil.
# @param filters [Array<WhereClause>] A list of where clauses for Fulfil.
- def initialize(fields, filters, alternative_filters = [])
+ # @param alternative_filters [Array<OrClause>] A list of or clauses for Fulfil.
+ # @param offset [Integer] Offset for pagination.
+ # @param limit [Integer] Limit for pagination.
+ def initialize(fields:, filters:, alternative_filters: [], offset: nil, limit: nil)
@fields = (fields || DEFAULT_FIELDS).map(&:to_s).uniq
@filters = (filters || []).map(&:to_filter).uniq
@filters += alternative_filters.map(&:to_filter).uniq if alternative_filters&.any?
+ @offset = offset
+ @limit = limit
end
- def to_json(*_object)
+ def to_h
{
fields: @fields,
- filters: @filters
- }.to_json
+ filters: @filters,
+ offset: @offset,
+ limit: @limit
+ }
end
end
end
end