Module: V1::Shared::SourceIdentifierFilterable

Extended by:
ActiveSupport::Concern
Included in:
Ont::RequestResource, Pacbio::LibraryResource, Pacbio::RequestResource
Defined in:
app/resources/v1/shared/source_identifier_filterable.rb

Overview

SourceIdentifierFilterable

This module provides functionality for filtering records based on source identifiers. A source identifier can be a plate barcode, tube barcode, or a combination of plate barcode and well position. Models that include this module will have methods to filter records using these identifiers.

Methods:

  • apply_source_identifier_filter(records, value, joins: { plate: :plate, tube: :tube, well: :well })
    • Filters the given records based on the provided source identifiers.
    • Parameters:
      • records: The ActiveRecord relation to filter.
      • value: An array of source identifiers to filter by.
      • joins: A hash of join associations with default values.
        • plate: The association name for joining with the plate table (default: :plate).
        • tube: The association name for joining with the tube table (default: :tube).
        • well: The association name for joining with the well table (default: :well).

Example Usage:

class MyModel < ApplicationRecord
include SourceIdentifierFilterable
end

records = MyModel.all
source_identifiers = ['PLATE123', 'TUBE456', 'PLATE789:A1']
filtered_records = MyModel.apply_source_identifier_filter(records, source_identifiers)

# Custom join associations
filtered_records = MyModel.apply_source_identifier_filter(records, source_identifiers,
                                                        joins: { plate: :source_plate,
                                                                 tube: :source_tube,
                                                                 well: :source_well })