mirror of
https://github.com/coder/coder.git
synced 2025-07-03 16:13:58 +00:00
74 lines
1.7 KiB
SQL
74 lines
1.7 KiB
SQL
-- name: CustomRoles :many
|
|
SELECT
|
|
*
|
|
FROM
|
|
custom_roles
|
|
WHERE
|
|
true
|
|
-- @lookup_roles will filter for exact (role_name, org_id) pairs
|
|
-- To do this manually in SQL, you can construct an array and cast it:
|
|
-- cast(ARRAY[('customrole','ece79dac-926e-44ca-9790-2ff7c5eb6e0c')] AS name_organization_pair[])
|
|
AND CASE WHEN array_length(@lookup_roles :: name_organization_pair[], 1) > 0 THEN
|
|
-- Using 'coalesce' to avoid troubles with null literals being an empty string.
|
|
(name, coalesce(organization_id, '00000000-0000-0000-0000-000000000000' ::uuid)) = ANY (@lookup_roles::name_organization_pair[])
|
|
ELSE true
|
|
END
|
|
-- This allows fetching all roles, or just site wide roles
|
|
AND CASE WHEN @exclude_org_roles :: boolean THEN
|
|
organization_id IS null
|
|
ELSE true
|
|
END
|
|
-- Allows fetching all roles to a particular organization
|
|
AND CASE WHEN @organization_id :: uuid != '00000000-0000-0000-0000-000000000000'::uuid THEN
|
|
organization_id = @organization_id
|
|
ELSE true
|
|
END
|
|
;
|
|
|
|
-- name: DeleteCustomRole :exec
|
|
DELETE FROM
|
|
custom_roles
|
|
WHERE
|
|
name = lower(@name)
|
|
AND organization_id = @organization_id
|
|
;
|
|
|
|
-- name: InsertCustomRole :one
|
|
INSERT INTO
|
|
custom_roles (
|
|
name,
|
|
display_name,
|
|
organization_id,
|
|
site_permissions,
|
|
org_permissions,
|
|
user_permissions,
|
|
created_at,
|
|
updated_at
|
|
)
|
|
VALUES (
|
|
-- Always force lowercase names
|
|
lower(@name),
|
|
@display_name,
|
|
@organization_id,
|
|
@site_permissions,
|
|
@org_permissions,
|
|
@user_permissions,
|
|
now(),
|
|
now()
|
|
)
|
|
RETURNING *;
|
|
|
|
-- name: UpdateCustomRole :one
|
|
UPDATE
|
|
custom_roles
|
|
SET
|
|
display_name = @display_name,
|
|
site_permissions = @site_permissions,
|
|
org_permissions = @org_permissions,
|
|
user_permissions = @user_permissions,
|
|
updated_at = now()
|
|
WHERE
|
|
name = lower(@name)
|
|
AND organization_id = @organization_id
|
|
RETURNING *;
|