class Pagy::Keyset
def after_latest_query
def after_latest_query operator = { asc: '>', desc: '<' } directions = @keyset.values if @vars[:tuple_comparison] && (directions.all?(:asc) || directions.all?(:desc)) columns = @keyset.keys placeholders = columns.map { |column| ":#{column}" }.join(', ') "( #{columns.join(', ')} ) #{operator[directions.first]} ( #{placeholders} )" else keyset = @keyset.to_a where = [] until keyset.empty? last_column, last_direction = keyset.pop query = +'( ' query << (keyset.map { |column, _d| "#{column} = :#{column}" } \ << "#{last_column} #{operator[last_direction]} :#{last_column}").join(' AND ') query << ' )' where << query end where.join(' OR ') end end