Skip to content

Commit ed36bc1

Browse files
committed
fix mariadb backend queries
1 parent 020e876 commit ed36bc1

File tree

1 file changed

+20
-12
lines changed

1 file changed

+20
-12
lines changed

backend/mariadb_backend.ml

+20-12
Original file line numberDiff line numberDiff line change
@@ -526,36 +526,41 @@ struct
526526
guardianDecodeUuid(roles.target_uuid)
527527
FROM
528528
guardian_actor_role_targets AS roles
529-
JOIN guardian_role_permissions AS role_permissions ON role_permissions.role = roles.role
530-
AND role_permissions.mark_as_deleted IS NULL
529+
LEFT JOIN guardian_role_permissions AS role_permissions
530+
ON role_permissions.role = roles.role
531+
AND role_permissions.mark_as_deleted IS NULL
531532
WHERE
532533
roles.mark_as_deleted IS NULL
533534
AND roles.actor_uuid = guardianEncodeUuid($1)
535+
AND `permission` IS NOT null
534536
UNION
535537
SELECT
536538
role_permissions.permission,
537539
role_permissions.target_model,
538540
NULL
539541
FROM
540542
guardian_actor_roles AS roles
541-
JOIN guardian_role_permissions AS role_permissions ON role_permissions.role = roles.role
542-
AND role_permissions.mark_as_deleted IS NULL
543+
LEFT JOIN guardian_role_permissions AS role_permissions
544+
ON role_permissions.role = roles.role
545+
AND role_permissions.mark_as_deleted IS NULL
543546
WHERE
544547
roles.mark_as_deleted IS NULL
545548
AND roles.actor_uuid = guardianEncodeUuid($1)
549+
AND `permission` IS NOT null
546550
UNION
547551
SELECT
548552
actor_permissions.permission,
549553
COALESCE (actor_permissions.target_model, targets.model),
550554
guardianDecodeUuid(actor_permissions.target_uuid)
551555
FROM
552556
guardian_actor_permissions AS actor_permissions
553-
JOIN guardian_targets AS targets
557+
LEFT JOIN guardian_targets AS targets
554558
ON targets.uuid = actor_permissions.target_uuid
555559
AND targets.mark_as_deleted IS NULL
556560
WHERE
557561
actor_permissions.actor_uuid = guardianEncodeUuid($1)
558562
AND actor_permissions.mark_as_deleted IS NULL
563+
AND `permission` IS NOT null
559564
|sql}
560565
|> Uuid.Actor.t ->* PermissionOnTarget.t
561566
;;
@@ -987,7 +992,7 @@ struct
987992
SELECT (
988993
SELECT TRUE
989994
FROM guardian_actor_roles AS roles
990-
JOIN guardian_role_permissions AS role_permissions
995+
LEFT JOIN guardian_role_permissions AS role_permissions
991996
ON roles.role = role_permissions.role
992997
AND role_permissions.mark_as_deleted IS NULL
993998
WHERE roles.mark_as_deleted IS NULL
@@ -1046,7 +1051,7 @@ struct
10461051
) OR (
10471052
SELECT TRUE
10481053
FROM guardian_actor_role_targets AS role_targets
1049-
JOIN guardian_role_permissions AS role_permissions
1054+
LEFT JOIN guardian_role_permissions AS role_permissions
10501055
ON role_targets.role = role_permissions.role
10511056
AND role_permissions.mark_as_deleted IS NULL
10521057
WHERE role_targets.mark_as_deleted IS NULL
@@ -1109,7 +1114,7 @@ struct
11091114
{sql|
11101115
SELECT TRUE
11111116
FROM guardian_actor_roles AS roles
1112-
JOIN guardian_role_permissions AS role_permissions
1117+
LEFT JOIN guardian_role_permissions AS role_permissions
11131118
ON roles.role = role_permissions.role
11141119
AND role_permissions.mark_as_deleted IS NULL
11151120
WHERE roles.mark_as_deleted IS NULL
@@ -1124,7 +1129,7 @@ struct
11241129
{sql|
11251130
SELECT TRUE
11261131
FROM guardian_actor_role_targets AS role_targets
1127-
JOIN guardian_role_permissions AS role_permissions
1132+
LEFT JOIN guardian_role_permissions AS role_permissions
11281133
ON role_targets.role = role_permissions.role
11291134
AND role_permissions.mark_as_deleted IS NULL
11301135
WHERE role_targets.mark_as_deleted IS NULL
@@ -1139,10 +1144,13 @@ struct
11391144
{sql|
11401145
SELECT TRUE
11411146
FROM guardian_actor_permissions AS actor_permissions
1142-
JOIN guardian_targets AS targets ON actor_permissions.target_uuid = targets.uuid
1143-
WHERE actor_permissions.actor_uuid = guardianEncodeUuid($1)
1147+
LEFT JOIN guardian_targets AS targets
1148+
ON actor_permissions.target_uuid = targets.uuid
1149+
AND targets.mark_as_deleted IS NULL
1150+
WHERE actor_permissions.mark_as_deleted IS NULL
1151+
AND actor_permissions.actor_uuid = guardianEncodeUuid($1)
11441152
AND (actor_permissions.permission = $2 OR actor_permissions.permission = 'manage')
1145-
AND targets.model = $3
1153+
AND (targets.model = $3 OR actor_permissions.target_model = $3)
11461154
LIMIT 1
11471155
|sql}
11481156
|> to_req

0 commit comments

Comments
 (0)