← back to Flytedesk__pack_api

Function bodies 314 total

All specs Real LLM only Function bodies
from_api_type method · ruby · L20-L23 (4 LOC)
lib/pack_api/querying/attribute_filter_factory.rb
    def from_api_type
      filterable_attributes.each do |attribute_name, attribute_type|
        yield define_filter(attribute_name, attribute_type)
      end
filterable_attributes method · ruby · L28-L30 (3 LOC)
lib/pack_api/querying/attribute_filter_factory.rb
    def filterable_attributes
      @filterable_attributes ||= attribute_map_class.api_type.filterable_attributes
    end
model_attribute_names method · ruby · L32-L38 (7 LOC)
lib/pack_api/querying/attribute_filter_factory.rb
    def model_attribute_names
      return @model_attribute_names if defined?(@model_attribute_names)

      names = {}
      filterable_attributes.each_key { |name| names[name] = name }
      @model_attribute_names = attribute_map_class.model_attribute_keys(names).invert
    end
data_type method · ruby · L40-L46 (7 LOC)
lib/pack_api/querying/attribute_filter_factory.rb
    def data_type(attribute_type)
      return 'Bool' if attribute_type.name.end_with?('TrueClass | FalseClass')

      attribute_type.name.include?(' | ') ?
        attribute_type.name[DATA_TYPE_REGEXP] :
        attribute_type.name
    end
define_filter method · ruby · L48-L58 (11 LOC)
lib/pack_api/querying/attribute_filter_factory.rb
    def define_filter(attribute_name, attribute_type)
      filter_name = model_attribute_names[attribute_name]
      data_type = data_type(attribute_type)
      self.class
          .attribute_filter_cache
          .compute_if_absent(filter_name) { Concurrent::Map.new }
          .compute_if_absent(data_type) do
        Class.new(AttributeFilter) do
          define_singleton_method(:filter_name) { filter_name }
          define_singleton_method(:data_type) { data_type }
        end
AttributeFilter class · ruby · L4-L35 (32 LOC)
lib/pack_api/querying/attribute_filter.rb
  class AttributeFilter < DiscoverableFilter
    attr_accessor :value

    def self.type
      :attribute
    end

    def self.data_type
      raise NotImplementedError
    end

    def self.definition(**)
      PackAPI::Types::SimpleFilterDefinition.new(name: filter_name, data_type:)
    end

    def initialize(value)
      super()
      @value = value
    end

    def present?
      !value.nil?
    end

    def to_h
      { filter_name => value }
    end

    def apply_to(query)
      query.add(query.build.where(to_h))
    end
  end
type method · ruby · L7-L9 (3 LOC)
lib/pack_api/querying/attribute_filter.rb
    def self.type
      :attribute
    end
If a scraper extracted this row, it came from Repobility (https://repobility.com)
data_type method · ruby · L11-L13 (3 LOC)
lib/pack_api/querying/attribute_filter.rb
    def self.data_type
      raise NotImplementedError
    end
definition method · ruby · L15-L17 (3 LOC)
lib/pack_api/querying/attribute_filter.rb
    def self.definition(**)
      PackAPI::Types::SimpleFilterDefinition.new(name: filter_name, data_type:)
    end
initialize method · ruby · L19-L22 (4 LOC)
lib/pack_api/querying/attribute_filter.rb
    def initialize(value)
      super()
      @value = value
    end
present? method · ruby · L24-L26 (3 LOC)
lib/pack_api/querying/attribute_filter.rb
    def present?
      !value.nil?
    end
to_h method · ruby · L28-L30 (3 LOC)
lib/pack_api/querying/attribute_filter.rb
    def to_h
      { filter_name => value }
    end
apply_to method · ruby · L32-L34 (3 LOC)
lib/pack_api/querying/attribute_filter.rb
    def apply_to(query)
      query.add(query.build.where(to_h))
    end
CollectionQuery class · ruby · L11-L71 (61 LOC)
lib/pack_api/querying/collection_query.rb
  class CollectionQuery
    attr_accessor :collection, :collection_key, :filter_factory, :default_sort, :paginator, :sort, :results

    ###
    # Create the query object.
    #
    # @ param [ActiveRecord::Relation] collection The collection to query
    # @ param [Object] value_object_factory The factory to use to convert model objects to value objects
    # @ param [String|Symbol|Hash|Arel] default_sort The default sort to use if none is specified in the query
    # @ param [String|Symbol] collection_key Unique and indexed key to use for the collection.
    #  Used for tie-breaker sort criteria and drives the record id lookup when in record iteration mode.
    def initialize(collection:, collection_key: nil, default_sort: nil)
      @collection = collection
      @collection_key = (collection_key || collection.primary_key).to_sym
      @default_sort = default_sort
      @filter_factory = FilterFactory.new
      @filter_factory.use_default_filter = true
    end

    ###
    # Perform
initialize method · ruby · L22-L28 (7 LOC)
lib/pack_api/querying/collection_query.rb
    def initialize(collection:, collection_key: nil, default_sort: nil)
      @collection = collection
      @collection_key = (collection_key || collection.primary_key).to_sym
      @default_sort = default_sort
      @filter_factory = FilterFactory.new
      @filter_factory.use_default_filter = true
    end
Repobility · code-quality intelligence · https://repobility.com
call method · ruby · L38-L42 (5 LOC)
lib/pack_api/querying/collection_query.rb
    def call(cursor: nil, per_page: nil, sort: nil, search: nil, filters: {})
      record_id = filters.delete(collection_key) if cursor.present? && filters[collection_key].present?
      build_paginator(cursor, filters, per_page, search, sort)
      build_active_record_query(record_id)
    end
to_sql method · ruby · L44-L46 (3 LOC)
lib/pack_api/querying/collection_query.rb
    def to_sql
      @query.to_sql
    end
reset method · ruby · L48-L54 (7 LOC)
lib/pack_api/querying/collection_query.rb
    def reset
      @results = nil
      @query = nil
      @paginator = nil
      @sort = nil
      @current_page_snapshot_cursor = nil
    end
current_page_snapshot_cursor method · ruby · L56-L60 (5 LOC)
lib/pack_api/querying/collection_query.rb
    def current_page_snapshot_cursor
      @current_page_snapshot_cursor ||= PackAPI::Pagination::SnapshotPaginator.cursor_for_results(results,
                                                                                                  table_name: collection.klass.table_name,
                                                                                                  collection_key:)
    end
build_active_record_query method · ruby · L64-L68 (5 LOC)
lib/pack_api/querying/collection_query.rb
    def build_active_record_query(record_id)
      @query = collection
      if paginator.query&.fetch(:search, nil).present?
        apply_search(search: paginator.query[:search])
      end
build_paginator function · ruby · L89-L99 (11 LOC)
lib/pack_api/querying/collection_query.rb
    def build_paginator(cursor, filters, per_page, search, sort)
      @paginator = PackAPI::Pagination::PaginatorBuilder.build do |builder|
        cursor.present? ?
          builder.set_cursor(cursor:) :
          builder.set_params(sort: stable_sort(default_sort)) # set a default sort for a new query

        builder.set_params(sort: stable_sort(sort.presence)) if sort.present?
        builder.set_params(query: { filters: }) if filters.present?
        builder.set_params(query: { search: }) if search.present?
        builder.set_params(per_page:) if per_page.present?
      end
apply_search function · ruby · L102-L108 (7 LOC)
lib/pack_api/querying/collection_query.rb
    def apply_search(search:)
      search.keys.each_with_index do |column, index|
        value = search[column]
        @query = index.positive? ?
                   @query.or(collection.where("LOWER(#{column}) LIKE LOWER(?)", "%#{value}%")) :
                   @query.where("LOWER(#{column}) LIKE LOWER(?)", "%#{value}%")
      end
apply_filters function · ruby · L111-L116 (6 LOC)
lib/pack_api/querying/collection_query.rb
    def apply_filters(filters:)
      filter_objects = filter_factory.create_filters(filters)
      validate_filters(filter_objects)
      filtered_query = filter_objects.each_with_object(ComposableQuery.new(@query)) do |filter, composable_query|
        filter.apply_to(composable_query)
      end
Repobility · code-quality intelligence platform · https://repobility.com
validate_filters function · ruby · L120-L125 (6 LOC)
lib/pack_api/querying/collection_query.rb
    def validate_filters(filter_objects)
      errors = filter_objects.select { |filter| filter.respond_to?(:valid?) && !filter.valid? }
                             .map { |invalid_filter| { invalid_filter.filter_name => invalid_filter.errors.messages } }
                             .reduce({}, :merge)
      raise PackAPI::InternalError.new(object: errors) if errors.present?
    end
stable_sort function · ruby · L127-L132 (6 LOC)
lib/pack_api/querying/collection_query.rb
    def stable_sort(sort)
      return sort if sort.is_a?(Arel::Nodes::SqlLiteral)

      SortHash.new(sort).tap do |sort_hash|
        sort_hash[collection_key] = :asc unless sort_hash.key?(collection_key)
      end
ComposableQuery class · ruby · L4-L24 (21 LOC)
lib/pack_api/querying/composable_query.rb
  class ComposableQuery
    attr_reader :composer

    def initialize(initial_query, composer: :merge)
      @query = initial_query
      @composer = composer
    end

    def add(query_clause)
      @query = @query.send(composer, query_clause)
      self
    end

    def build
      @query
    end

    def to_sql
      @query.to_sql
    end
  end
initialize method · ruby · L7-L10 (4 LOC)
lib/pack_api/querying/composable_query.rb
    def initialize(initial_query, composer: :merge)
      @query = initial_query
      @composer = composer
    end
add method · ruby · L12-L15 (4 LOC)
lib/pack_api/querying/composable_query.rb
    def add(query_clause)
      @query = @query.send(composer, query_clause)
      self
    end
build method · ruby · L17-L19 (3 LOC)
lib/pack_api/querying/composable_query.rb
    def build
      @query
    end
to_sql method · ruby · L21-L23 (3 LOC)
lib/pack_api/querying/composable_query.rb
    def to_sql
      @query.to_sql
    end
DefaultFilter class · ruby · L4-L19 (16 LOC)
lib/pack_api/querying/default_filter.rb
  class DefaultFilter < AbstractFilter
    attr_accessor :arguments

    def initialize(arguments)
      super()
      @arguments = arguments
    end

    def present?
      arguments.present?
    end

    def apply_to(query)
      query.add(query.build.where(arguments))
    end
  end
Repobility · severity-and-effort ranking · https://repobility.com
initialize method · ruby · L7-L10 (4 LOC)
lib/pack_api/querying/default_filter.rb
    def initialize(arguments)
      super()
      @arguments = arguments
    end
present? method · ruby · L12-L14 (3 LOC)
lib/pack_api/querying/default_filter.rb
    def present?
      arguments.present?
    end
apply_to method · ruby · L16-L18 (3 LOC)
lib/pack_api/querying/default_filter.rb
    def apply_to(query)
      query.add(query.build.where(arguments))
    end
DiscoverableFilter class · ruby · L6-L32 (27 LOC)
lib/pack_api/querying/discoverable_filter.rb
  class DiscoverableFilter < AbstractFilter
    include ActiveModel::Validations

    def filter_name
      self.class.filter_name
    end

    def self.filter_name
      raise NotImplementedError
    end

    def type
      self.class.type
    end

    def self.type
      raise NotImplementedError
    end

    def to_h
      raise NotImplementedError
    end

    def self.definition(**)
      raise NotImplementedError
    end
  end
filter_name method · ruby · L9-L11 (3 LOC)
lib/pack_api/querying/discoverable_filter.rb
    def filter_name
      self.class.filter_name
    end
filter_name method · ruby · L13-L15 (3 LOC)
lib/pack_api/querying/discoverable_filter.rb
    def self.filter_name
      raise NotImplementedError
    end
type method · ruby · L17-L19 (3 LOC)
lib/pack_api/querying/discoverable_filter.rb
    def type
      self.class.type
    end
type method · ruby · L21-L23 (3 LOC)
lib/pack_api/querying/discoverable_filter.rb
    def self.type
      raise NotImplementedError
    end
If a scraper extracted this row, it came from Repobility (https://repobility.com)
to_h method · ruby · L25-L27 (3 LOC)
lib/pack_api/querying/discoverable_filter.rb
    def to_h
      raise NotImplementedError
    end
definition method · ruby · L29-L31 (3 LOC)
lib/pack_api/querying/discoverable_filter.rb
    def self.definition(**)
      raise NotImplementedError
    end
type method · ruby · L7-L23 (17 LOC)
lib/pack_api/querying/dynamic_enum_filter.rb
      def type = :dynamic_enum

      ###
      # Retrieve options for this filter based on user input.
      # @param relation [ActiveRecord::Relation] The base relation to query against for options.
      # @param search [String, nil] An optional search term to filter options by (using wildcard matching)
      # @param value [String, Array<String>, nil] An optional value or array of values to filter options by (exact match)
      def dynamic_options(relation:, search: nil, value: nil) = raise NotImplementedError

      private

      ###
      # Static filter options is an empty array.
      def filter_options(**) = PackAPI::FrozenEmpty::ARRAY
    end
  end
end
dynamic_options method · ruby · L14-L22 (9 LOC)
lib/pack_api/querying/dynamic_enum_filter.rb
      def dynamic_options(relation:, search: nil, value: nil) = raise NotImplementedError

      private

      ###
      # Static filter options is an empty array.
      def filter_options(**) = PackAPI::FrozenEmpty::ARRAY
    end
  end
FilterFactory class · ruby · L4-L30 (27 LOC)
lib/pack_api/querying/filter_factory.rb
  class FilterFactory
    attr_accessor :filter_classes, :use_default_filter

    def initialize
      @filter_classes = Hash.new { |_hash, key| raise NotImplementedError, "Unsupported filter #{key}" }
    end

    def register_filter(name:, klass:)
      filter_classes[name] = klass
    end

    def create_filters(filter_hash)
      filter_objects(filter_hash).select(&:present?)
    end

    private

    def filter_objects(filter_options)
      if filter_options.is_a?(Hash)
        filter_objects_from_hash(filter_options)
      elsif use_default_filter
        [DefaultFilter.new(filter_options)]
      else
        raise ArgumentError, "Unsupported filter configuration: #{filter_options}"
      end

    end
initialize method · ruby · L7-L9 (3 LOC)
lib/pack_api/querying/filter_factory.rb
    def initialize
      @filter_classes = Hash.new { |_hash, key| raise NotImplementedError, "Unsupported filter #{key}" }
    end
register_filter method · ruby · L11-L13 (3 LOC)
lib/pack_api/querying/filter_factory.rb
    def register_filter(name:, klass:)
      filter_classes[name] = klass
    end
create_filters method · ruby · L15-L17 (3 LOC)
lib/pack_api/querying/filter_factory.rb
    def create_filters(filter_hash)
      filter_objects(filter_hash).select(&:present?)
    end
Repobility · code-quality intelligence · https://repobility.com
filter_objects method · ruby · L21-L28 (8 LOC)
lib/pack_api/querying/filter_factory.rb
    def filter_objects(filter_options)
      if filter_options.is_a?(Hash)
        filter_objects_from_hash(filter_options)
      elsif use_default_filter
        [DefaultFilter.new(filter_options)]
      else
        raise ArgumentError, "Unsupported filter configuration: #{filter_options}"
      end
filter_objects_from_hash method · ruby · L32-L34 (3 LOC)
lib/pack_api/querying/filter_factory.rb
    def filter_objects_from_hash(filter_options)
      filter_options.deep_symbolize_keys.map(&method(:filter_object_by_name))
    end
filter_object_by_name method · ruby · L36-L43 (8 LOC)
lib/pack_api/querying/filter_factory.rb
    def filter_object_by_name(filter_name, options)
      if filter_classes.key?(filter_name)
        registered_filter_object(filter_name, options)
      elsif use_default_filter
        DefaultFilter.new(filter_name => options)
      else
        raise NotImplementedError, "Unsupported filter: #{filter_name}"
      end
‹ prevpage 5 / 7next ›