class DoubleEntry::Reporting::LineMetadataFilter

Public Class Methods

filter(collection:, metadata:) click to toggle source
# File lib/double_entry/reporting/line_metadata_filter.rb, line 6
def self.filter(collection:, metadata:)
  table_alias_index = 0

  metadata.reduce(collection) do |filtered_collection, (key, value)|
    table_alias = "m#{table_alias_index}"
    table_alias_index += 1

    filtered_collection.
      joins("INNER JOIN #{line_metadata_table} as #{table_alias} ON #{table_alias}.line_id = #{lines_table}.id").
      where("#{table_alias}.key = ? AND #{table_alias}.value = ?", key, value)
  end
end

Private Class Methods

line_metadata_table() click to toggle source
# File lib/double_entry/reporting/line_metadata_filter.rb, line 21
def self.line_metadata_table
  DoubleEntry::LineMetadata.table_name
end
lines_table() click to toggle source
# File lib/double_entry/reporting/line_metadata_filter.rb, line 26
def self.lines_table
  DoubleEntry::Line.table_name
end