Skip to content

Commit 173d58a

Browse files
authored
EPMRPP-111896 || split dashboard lock and unlock logic (#1193)
1 parent 352e8e7 commit 173d58a

File tree

2 files changed

+25
-6
lines changed

2 files changed

+25
-6
lines changed

src/main/java/com/epam/ta/reportportal/dao/DashboardRepository.java

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,17 +73,36 @@ public interface DashboardRepository extends ReportPortalRepository<Dashboard, L
7373
* </ul>
7474
*
7575
* @param dashboardId id of the dashboard to toggle lock for
76-
* @param isLocked entity new status value
7776
*/
7877
@Modifying
7978
@Query(value = """
8079
WITH widget_ids AS (SELECT widget_id FROM dashboard_widget WHERE dashboard_id = :dashboardId)
81-
UPDATE owned_entity SET locked = :isLocked
80+
UPDATE owned_entity SET locked = true
8281
WHERE id = :dashboardId
8382
OR id IN (SELECT widget_id FROM widget_ids)
8483
OR id IN (SELECT filter_id FROM widget_filter WHERE widget_id IN (SELECT widget_id FROM widget_ids));
8584
""", nativeQuery = true)
86-
void toggleDashboardLock(@Param("dashboardId") Long dashboardId, @Param("isLocked") boolean isLocked);
85+
void lockDashboard(@Param("dashboardId") Long dashboardId);
86+
87+
88+
@Modifying
89+
@Query(value = """
90+
WITH widget_ids AS (SELECT widget_id FROM dashboard_widget WHERE dashboard_id = :dashboardId)
91+
UPDATE owned_entity SET locked = false
92+
WHERE id = :dashboardId
93+
OR id IN (SELECT widget_id FROM widget_ids)
94+
OR (
95+
id IN (SELECT filter_id FROM widget_filter WHERE widget_id IN (SELECT widget_id FROM widget_ids))
96+
AND id NOT IN (
97+
SELECT DISTINCT wf.filter_id
98+
FROM widget_filter wf
99+
JOIN dashboard_widget dw ON wf.widget_id = dw.widget_id
100+
JOIN owned_entity oe ON dw.dashboard_id = oe.id
101+
WHERE oe.locked = true AND oe.id != :dashboardId
102+
)
103+
);
104+
""", nativeQuery = true)
105+
void unlockDashboard(@Param("dashboardId") Long dashboardId);
87106

88107
/**
89108
* Unlocks all dashboard filters that are related to the specified dashboard

src/test/java/com/epam/ta/reportportal/dao/DashboardRepositoryTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -123,15 +123,15 @@ void shouldFindByFilter() {
123123

124124
@Test
125125
void toggleDashboardLock() {
126-
dashboardRepository.toggleDashboardLock(13L, true);
126+
dashboardRepository.lockDashboard(13L);
127127
Dashboard dashboard = dashboardRepository.findById(13L).get();
128128
assertTrue(dashboard.getLocked());
129129
}
130130

131131
@Test
132132
void unlockDashboardFilters() {
133-
dashboardRepository.toggleDashboardLock(13L, true);
134-
dashboardRepository.toggleDashboardLock(18L, true);
133+
dashboardRepository.lockDashboard(13L);
134+
dashboardRepository.lockDashboard(18L);
135135
entityManager.flush();
136136
entityManager.clear();
137137

0 commit comments

Comments
 (0)