11DROP VIEW workspaces_expanded;
22
3- -- Enrich group_acl and user_acl with the actors' display information.
3+ -- Expand more by including group_acl_display_info and
4+ -- user_acl_display_info columns with the actors' name and avatar.
45CREATE VIEW workspaces_expanded AS
56 SELECT workspaces .id ,
67 workspaces .created_at ,
@@ -18,42 +19,43 @@ CREATE VIEW workspaces_expanded AS
1819 workspaces .automatic_updates ,
1920 workspaces .favorite ,
2021 workspaces .next_start_at ,
21- -- Enrich group_acl with group info
22+ workspaces .group_acl ,
23+ workspaces .user_acl ,
24+ visible_users .avatar_url AS owner_avatar_url,
25+ visible_users .username AS owner_username,
26+ visible_users .name AS owner_name,
27+ organizations .name AS organization_name,
28+ organizations .display_name AS organization_display_name,
29+ organizations .icon AS organization_icon,
30+ organizations .description AS organization_description,
31+ templates .name AS template_name,
32+ templates .display_name AS template_display_name,
33+ templates .icon AS template_icon,
34+ templates .description AS template_description,
35+ tasks .id AS task_id,
36+ -- Workspace ACL actors' display info
2237 COALESCE((
2338 SELECT jsonb_object_agg(
2439 acl .key ,
25- acl . value || jsonb_build_object(
40+ jsonb_build_object(
2641 ' name' , g .name ,
2742 ' avatar_url' , COALESCE(g .avatar_url , ' ' )
2843 )
2944 )
3045 FROM jsonb_each(workspaces .group_acl ) AS acl
3146 LEFT JOIN groups g ON g .id = acl .key ::uuid
32- ), ' {}' ::jsonb) AS group_acl,
33- -- Enrich user_acl with user info
47+ ), ' {}' ::jsonb) AS group_acl_display_info,
3448 COALESCE((
3549 SELECT jsonb_object_agg(
3650 acl .key ,
37- acl . value || jsonb_build_object(
51+ jsonb_build_object(
3852 ' name' , COALESCE(vu .name , ' ' ),
3953 ' avatar_url' , COALESCE(vu .avatar_url , ' ' )
4054 )
4155 )
4256 FROM jsonb_each(workspaces .user_acl ) AS acl
4357 LEFT JOIN visible_users vu ON vu .id = acl .key ::uuid
44- ), ' {}' ::jsonb) AS user_acl,
45- visible_users .avatar_url AS owner_avatar_url,
46- visible_users .username AS owner_username,
47- visible_users .name AS owner_name,
48- organizations .name AS organization_name,
49- organizations .display_name AS organization_display_name,
50- organizations .icon AS organization_icon,
51- organizations .description AS organization_description,
52- templates .name AS template_name,
53- templates .display_name AS template_display_name,
54- templates .icon AS template_icon,
55- templates .description AS template_description,
56- tasks .id AS task_id
58+ ), ' {}' ::jsonb) AS user_acl_display_info
5759 FROM ((((workspaces
5860 JOIN visible_users ON ((workspaces .owner_id = visible_users .id )))
5961 JOIN organizations ON ((workspaces .organization_id = organizations .id )))
0 commit comments