</if>
<if test="query.nameOrKeyQuery!=null">
AND (
- exists (
- select 1
- from resource_index ri
- where
- ri.resource_id=p.id
+ p.kee=#{query.nameOrKeyQuery}
+ OR
+ p.id IN (
+ SELECT ri.resource_id
+ FROM resource_index ri
+ WHERE ri.kee like #{query.nameOrKeyQueryToSqlForResourceIndex} ESCAPE '/'
AND ri.qualifier in
<foreach collection="query.qualifiers" item="qualifier" open="(" close=")" separator=",">
#{qualifier}
</foreach>
- AND ri.kee like #{query.nameOrKeyQueryToSqlForResourceIndex} ESCAPE '/')
- OR p.kee = #{query.nameOrKeyQuery})
+ )
+ )
</if>
</where>
</sql>
</if>
<if test="query.nameOrKeyQuery!=null">
AND (
- exists (
- select 1
- from resource_index ri
- where
- (ri.resource_id=p.id OR ri.resource_id=p.copy_resource_id)
- AND ri.kee like #{query.nameOrKeyQueryToSqlForResourceIndex} ESCAPE '/')
- OR p.kee = #{query.nameOrKeyQuery})
+ p.kee=#{query.nameOrKeyQuery}
+ OR
+ p.id IN (
+ SELECT ri.resource_id
+ FROM resource_index ri
+ WHERE ri.kee like #{query.nameOrKeyQueryToSqlForResourceIndex} ESCAPE '/'
+ )
+ OR
+ p.copy_resource_id IN (
+ SELECT ri.resource_id
+ FROM resource_index ri
+ WHERE ri.kee like #{query.nameOrKeyQueryToSqlForResourceIndex} ESCAPE '/'
+ )
+ )
</if>
</sql>
ComponentDto project = newProjectDto().setKey("project-key").setUuid("project-uuid");
SnapshotDto projectSnapshot = componentDb.insertProjectAndSnapshot(project);
SnapshotDto moduleSnapshot = componentDb.insertComponentAndSnapshot(newModuleDto("module-1-uuid", project), projectSnapshot);
- componentDb.insertComponentAndSnapshot(newFileDto(project, "file-1-uuid").setKey("file-key-1"), projectSnapshot);
- componentDb.insertComponentAndSnapshot(newFileDto(project, "file-2-uuid").setKey("file-key-2"), moduleSnapshot);
+ componentDb.insertComponentAndSnapshot(newFileDto(project, "file-1-uuid").setKey("file-key-1").setName("File one"), projectSnapshot);
+ componentDb.insertComponentAndSnapshot(newFileDto(project, "file-2-uuid").setKey("file-key-2").setName("File two"), moduleSnapshot);
db.commit();
componentDb.indexProjects();
}
@Test
- public void select_direct_children_of_a_view() {
+ public void list_direct_children_of_a_view() {
ComponentDto view = newView("view-uuid");
SnapshotDto viewSnapshot = componentDb.insertViewAndSnapshot(view);
// one subview
componentDb.insertProjectAndSnapshot(project);
componentDb.insertComponentAndSnapshot(newProjectCopy("project-copy-uuid", project, view), viewSnapshot);
componentDb.indexProjects();
+ ComponentTreeQuery dbQuery = newTreeQuery(viewSnapshot).build();
+
+ List<ComponentDtoWithSnapshotId> components = underTest.selectDirectChildren(dbSession, dbQuery);
+
+ assertThat(components).extracting("uuid").containsOnly("project-copy-uuid", "subview-uuid");
+ }
+
+ @Test
+ public void search_direct_children_of_a_view() {
+ ComponentDto view = newView("view-uuid");
+ SnapshotDto viewSnapshot = componentDb.insertViewAndSnapshot(view);
+ // one subview
+ ComponentDto subView = newSubView(view, "subview-uuid", "subview-key").setName("subview name");
+ componentDb.insertComponentAndSnapshot(subView, viewSnapshot);
+ // one project and its copy linked to the view
+ ComponentDto project = newProjectDto("project-uuid").setName("project name");
+ componentDb.insertProjectAndSnapshot(project);
+ componentDb.insertComponentAndSnapshot(newProjectCopy("project-copy-uuid", project, view), viewSnapshot);
+ componentDb.indexProjects();
ComponentTreeQuery dbQuery = newTreeQuery(viewSnapshot).setNameOrKeyQuery("name").build();
List<ComponentDtoWithSnapshotId> components = underTest.selectDirectChildren(dbSession, dbQuery);