- cl = ArvadosModel::kind_class op
- if cl
- cond << "#{table_name}.#{attr} like ?"
- param_out << cl.uuid_like_pattern
- else
- cond << "1=0"
- end
- end
- cond_out << cond.join(' OR ')
- end
- end
- if cond_out.any?
- @objects = @objects.where(cond_out.join(' AND '), *param_out)
- end
- end
- if @where.is_a? Hash and @where.any?
- conditions = ['1=1']
- @where.each do |attr,value|
- if attr.to_s == 'any'
- if value.is_a?(Array) and
- value.length == 2 and
- value[0] == 'contains' then
- ilikes = []
- model_class.searchable_columns('ilike').each do |column|
- ilikes << "#{table_name}.#{column} ilike ?"
- conditions << "%#{value[1]}%"
- end
- if ilikes.any?
- conditions[0] << ' and (' + ilikes.join(' or ') + ')'
- end
- end
- elsif attr.to_s.match(/^[a-z][_a-z0-9]+$/) and
- model_class.columns.collect(&:name).index(attr.to_s)
- if value.nil?
- conditions[0] << " and #{table_name}.#{attr} is ?"
- conditions << nil
- elsif value.is_a? Array
- if value[0] == 'contains' and value.length == 2
- conditions[0] << " and #{table_name}.#{attr} like ?"
- conditions << "%#{value[1]}%"
+ cl = ArvadosModel::kind_class op
+ if cl
+ cond << "#{ar_table_name}.#{attr} like ?"
+ param_out << cl.uuid_like_pattern