@@ -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
0 commit comments