def self._contents_requires_parameters
_index_requires_parameters.
merge({
+ uuid: {
+ type: 'string', required: false, default: nil
+ },
include_linked: {
type: 'boolean', required: false, default: false
},
# Set @objects:
load_searchable_objects(owner_uuid: @object.andand.uuid, include_linked: params[:include_linked])
- @links = Link.where('link_class=? and tail_uuid=?'\
- ' and head_uuid in (?)',
- 'name',
- @object.uuid,
- @objects.collect(&:uuid))
+ sql = 'link_class=? and head_uuid in (?)'
+ sql_params = ['name', @objects.collect(&:uuid)]
+ if @object
+ sql += ' and tail_uuid=?'
+ sql_params << @object.uuid
+ end
+ @links = Link.where sql, *sql_params
@object_list = {
:kind => "arvados#objectList",
:etag => "",
Collection,
Human, Specimen, Trait].each do |klass|
@objects = klass.readable_by(*@read_users)
+ if klass == Group
+ @objects = @objects.where('group_class = ?', 'project')
+ end
conds = []
cond_params = []
if opts[:owner_uuid]
cond_params << opts[:owner_uuid]
end
if opts[:include_linked]
- conds << " OR #{klass.table_name}.uuid IN (SELECT head_uuid FROM links WHERE link_class=#{klass.sanitize 'name'} AND links.tail_uuid=#{klass.sanitize @object.uuid})"
+ conds << "#{klass.table_name}.uuid IN (SELECT head_uuid FROM links WHERE link_class=#{klass.sanitize 'name'} AND links.tail_uuid=#{klass.sanitize @object.uuid})"
end
if conds.any?
+ cond_sql = '(' + conds.join(') OR (') + ')'
@objects = @objects.where(cond_sql, *cond_params)
end
@objects = @objects.order("#{klass.table_name}.uuid")