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