Skip to content
This repository was archived by the owner on Nov 9, 2022. It is now read-only.

Commit b1f85f6

Browse files
committed
retrieval of existing roles/users outside loop
create-roles and create-users previously retrieved existing users and roles within the loop iterating over roles/users to create now existing roles/users are retrieved outside the iteration. only the role/user names are retrieved.
1 parent 6f7a80f commit b1f85f6

File tree

1 file changed

+47
-4
lines changed

1 file changed

+47
-4
lines changed

deploy/lib/xquery/setup.xqy

Lines changed: 47 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4742,6 +4742,10 @@ declare function setup:validate-external-security(
47424742
declare function setup:create-roles(
47434743
$import-config as element(configuration))
47444744
{
4745+
(: get the existing role names from the default security DB :)
4746+
let $existing-role-names := setup:get-existing-role-names()
4747+
return
4748+
47454749
(: Create all missing roles :)
47464750
for $role in $import-config/sec:roles/sec:role
47474751
let $role-name as xs:string := $role/sec:role-name
@@ -4754,7 +4758,7 @@ declare function setup:create-roles(
47544758
</options>
47554759
return
47564760
(: if the role exists, then don't create it :)
4757-
if (setup:get-roles(())/sec:role[sec:role-name = $role-name]) then ()
4761+
if ($existing-role-names[. = $role-name]) then ()
47584762
else
47594763
(
47604764
xdmp:eval(
@@ -4911,6 +4915,10 @@ declare function setup:create-roles(
49114915
declare function setup:validate-roles(
49124916
$import-config as element(configuration))
49134917
{
4918+
(: get the existing role names from the default security DB :)
4919+
let $existing-role-names := setup:get-existing-role-names()
4920+
return
4921+
49144922
for $role in $import-config/sec:roles/sec:role
49154923
let $role-name as xs:string := $role/sec:role-name
49164924
let $description as xs:string? := $role/sec:description
@@ -4921,7 +4929,7 @@ declare function setup:validate-roles(
49214929
let $privileges as element(sec:privilege)* := $role/sec:privileges/sec:privilege
49224930
let $amps as element(sec:amp)* := $role/sec:amps/*
49234931
let $external-names as xs:string* := $role/sec:external-names/sec:external-name
4924-
let $match := setup:get-roles(())/sec:role[sec:role-name = $role-name]
4932+
let $match := $existing-role-names[. = $role-name]
49254933
return
49264934
if ($match) then
49274935
if ($match/sec:role-name != $role-name or
@@ -4964,6 +4972,11 @@ declare function setup:associate-users-with-roles($import-config as element(conf
49644972

49654973
declare function setup:create-users($import-config as element(configuration))
49664974
{
4975+
(: get the existing user names from the default security DB :)
4976+
let $existing-user-names := setup:get-existing-user-names()
4977+
return
4978+
4979+
(: Create all missing users :)
49674980
for $user in $import-config/sec:users/sec:user
49684981
let $user-name as xs:string := $user/sec:user-name
49694982
let $description as xs:string? := $user/sec:description
@@ -4978,7 +4991,7 @@ declare function setup:create-users($import-config as element(configuration))
49784991
<isolation>different-transaction</isolation>
49794992
</options>
49804993
return
4981-
if (setup:get-users(())/sec:user[sec:user-name = $user-name]) then
4994+
if ($existing-user-names[. = $user-name]) then
49824995
(
49834996
xdmp:eval(
49844997
'import module namespace sec="http://marklogic.com/xdmp/security" at "/MarkLogic/security.xqy";
@@ -5088,6 +5101,10 @@ declare function setup:create-users($import-config as element(configuration))
50885101

50895102
declare function setup:validate-users($import-config as element(configuration))
50905103
{
5104+
(: get the existing user names from the default security DB :)
5105+
let $existing-user-names := setup:get-existing-user-names()
5106+
return
5107+
50915108
for $user in $import-config/sec:users/sec:user
50925109
let $user-name as xs:string := $user/sec:user-name
50935110
let $description as xs:string? := $user/sec:description
@@ -5096,7 +5113,7 @@ declare function setup:validate-users($import-config as element(configuration))
50965113
let $permissions as element(sec:permission)* := $user/sec:permissions/*
50975114
let $collections as xs:string* := $user/sec:collections/*
50985115
let $external-names as xs:string* := $user/sec:external-names/sec:external-name
5099-
let $match := setup:get-users(())/sec:user[sec:user-name = $user-name]
5116+
let $match := $existing-user-names[. = $user-name]
51005117
return
51015118
if ($match) then
51025119
if ($match/sec:description != $description or
@@ -5451,6 +5468,19 @@ declare function setup:get-privilege-by-name($name as xs:string) as element(sec:
54515468
</options>)
54525469
};
54535470

5471+
(: Gets the user names from the default security database :)
5472+
declare function setup:get-existing-user-names() as element(sec:user-name)* {
5473+
let $user-names :=
5474+
xdmp:eval(
5475+
'import module namespace sec="http://marklogic.com/xdmp/security" at "/MarkLogic/security.xqy";
5476+
/sec:user',
5477+
(),
5478+
<options xmlns="xdmp:eval">
5479+
<database>{$default-security}</database>
5480+
</options>)/sec:user-name
5481+
return $user-names
5482+
};
5483+
54545484
declare function setup:get-users-by-name($names as xs:string*) as element(sec:users)? {
54555485
let $ids :=
54565486
for $name in $names
@@ -5530,6 +5560,19 @@ declare function setup:get-user-id($user-name as xs:string) as xs:unsignedLong?
55305560
</options>)
55315561
};
55325562

5563+
(: Gets the role names from the default security database :)
5564+
declare function setup:get-existing-role-names() as element(sec:role-name)* {
5565+
let $role-names :=
5566+
xdmp:eval(
5567+
'import module namespace sec="http://marklogic.com/xdmp/security" at "/MarkLogic/security.xqy";
5568+
/sec:role',
5569+
(),
5570+
<options xmlns="xdmp:eval">
5571+
<database>{$default-security}</database>
5572+
</options>)/sec:role-name
5573+
return $role-names
5574+
};
5575+
55335576
declare function setup:get-roles-by-name($roles as xs:string*) as element(sec:roles)? {
55345577
let $ids :=
55355578
for $role in $roles

0 commit comments

Comments
 (0)