From 418e89a9c978485a223f6daec4ce080245be56c6 Mon Sep 17 00:00:00 2001
From: Julian Keck <julian.keck9@kit.edu>
Date: Tue, 2 Jul 2024 15:34:42 +0200
Subject: [PATCH] UPD refactor group service to use union

Closes #708
---
 frontend/src/api-services/groups.service.js | 11 +++--------
 frontend/src/views/cntl/Groups.vue          |  8 ++++----
 2 files changed, 7 insertions(+), 12 deletions(-)

diff --git a/frontend/src/api-services/groups.service.js b/frontend/src/api-services/groups.service.js
index 9eb88aca3..26e3b1a54 100644
--- a/frontend/src/api-services/groups.service.js
+++ b/frontend/src/api-services/groups.service.js
@@ -46,19 +46,14 @@ export default {
   },
   get_by_name (config, name) {
     const ta = [
-      { name: 'cntl.group.list', old: { name: name } },
+      { name: 'cntl.group.list', idx: 'main_groups', old: { name: name } },
+      { name: 'cntl.group.list', idx: 'subgroups', old: { is_sub: true }, inner_join_ref: {main_groups: 'api_fkey_cntl_group_sub'} },
+      { name: 'cntl.group.list', idx: 'group_list', union_join_ref: {main_groups: 'self', subgroups: 'self'} },
       { name: 'cntl.mgr2group.list', inner_join_ref: { group_list: 'default'}, old: { sorting_params_list: ['group_name asc', 'mgr_login_name asc'] }},
       { name: 'nd.bcd2group.list', inner_join_ref: { group_list: 'default'}, old: { sorting_params_list: ['group_name asc', 'bcd_name asc'] }},
       { name: 'dns.fqdn2group.list', inner_join_ref: { group_list: 'default'}, old: { sorting_params_list: ['group_name', 'fqdn_value'] } },
       { name: 'cntl.mgr.list', inner_join_ref: { mgr2group_list: 'default'} },
       { name: 'nd.bcd.list', inner_join_ref: { bcd2group_list: 'default'} },
-      // subgroups, as union is currently not possible
-      { name: 'cntl.group.list', idx: 'subgroups', old: { is_sub: true }, inner_join_ref: {group_list: 'api_fkey_cntl_group_sub'} },
-      { idx: 'sub_mgr2group_list', name: 'cntl.mgr2group.list', inner_join_ref: { subgroups: 'default'}, old: { sorting_params_list: ['group_name asc', 'mgr_login_name asc'] }},
-      { idx: 'sub_bcd2group_list', name: 'nd.bcd2group.list', inner_join_ref: { subgroups: 'default'}, old: { sorting_params_list: ['group_name asc', 'bcd_name asc'] }},
-      { idx: 'sub_fqdn2group_list', name: 'dns.fqdn2group.list', inner_join_ref: { subgroups: 'default'}, old: { sorting_params_list: ['group_name', 'fqdn_value'] } },
-      { idx: 'sub_mgr_list', name: 'cntl.mgr.list', inner_join_ref: { sub_mgr2group_list: 'default'} },
-      { idx: 'sub_bcd_list', name: 'nd.bcd.list', inner_join_ref: { sub_bcd2group_list: 'default'} }
     ]
     return TransactionService.execute(config, ta)
   }
diff --git a/frontend/src/views/cntl/Groups.vue b/frontend/src/views/cntl/Groups.vue
index 3fe9aab52..28a59bc78 100644
--- a/frontend/src/views/cntl/Groups.vue
+++ b/frontend/src/views/cntl/Groups.vue
@@ -190,10 +190,10 @@ export default {
       if (!this.entry && this.groups.length > 0) {
         this.$store.commit('setNavigationRefreshHandle', { gpk: this.groups[0].gpk, objType: 'cntl.group' })
       }
-      this.bcds = this.merged_dict_of_lists_by_value_of_array([res.bcd_list, res.sub_bcd_list], 'name')
-      this.bcds2grp = this.merged_dict_of_lists_by_value_of_array([res.bcd2group_list, res.sub_bcd2group_list], 'group_name')
-      this.mgrs2grp = this.merged_dict_of_lists_by_value_of_array([res.mgr2group_list, res.sub_mgr2group_list], 'group_name')
-      this.fqdn2grp = this.merged_dict_of_lists_by_value_of_array([res.fqdn2group_list, res.sub_fqdn2group_list], 'group_name')
+      this.bcds = apiutil.dict_of_lists_by_value_of_array(res.bcd_list, 'name')
+      this.bcds2grp = apiutil.dict_of_lists_by_value_of_array(res.bcd2group_list, 'group_name')
+      this.mgrs2grp = apiutil.dict_of_lists_by_value_of_array(res.mgr2group_list, 'group_name')
+      this.fqdn2grp = apiutil.dict_of_lists_by_value_of_array(res.fqdn2group_list, 'group_name')
       this.mgrs = Object.assign({}, apiutil.dict_by_value_of_array(res.mgr_list, 'login_name'), apiutil.dict_by_value_of_array(res.sub_mgr_list || [], 'login_name'))
       const subgroups = res.group_list.filter(group => group.is_sub)
       if (!this.entry) {
-- 
GitLab