Changes between Initial Version and Version 1 of Views


Ignore:
Timestamp:
09/24/25 23:23:29 (3 weeks ago)
Author:
226026
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Views

    v1 v1  
     1= Погледи
     2== Поглед за прикажување на сите одговори на даден топик
     3{{{
     4create or replace view v_discussion_thread
     5as
     6with recursive
     7    depth_table as
     8        (select parent_id, id, 0 as depth
     9         from discussion_thread
     10         UNION ALL
     11         select discuss.parent_id, dpth.id, dpth.depth + 1
     12         from depth_table dpth
     13                  join discussion_thread discuss
     14                       on dpth.parent_id = discuss.id),
     15    tmp as (select id, max(depth) as depth
     16            from depth_table
     17            group by id)
     18select d.id as id, t.user_id as user_id, d.depth as depth, d1.parent_id as parent_id, t.created_at as "created_at"
     19from tmp d
     20         join depth_table d1
     21              on d.id = d1.id and d1.depth = d.depth
     22         join thread t
     23              on t.id = d.id;
     24}}}
     25
     26== Поглед за прикажување на пермисиите за дадена улога во за сите канали во даден проект.
     27{{{
     28CREATE OR REPLACE VIEW role_channel_permissions AS
     29SELECT
     30    c.project_resource_id,
     31    c.name,
     32    pr.id as role_id,
     33    COALESCE(
     34                    STRING_AGG(
     35                    DISTINCT rp.permission_name, ',' ORDER BY rp.permission_name
     36                              ) FILTER (
     37                        WHERE
     38                        (pr.override_type = 'INCLUDE' AND rpo.project_resource_id IS NOT NULL)
     39                            OR
     40                        (pr.override_type = 'EXCLUDE' AND rpo.project_resource_id IS NULL)
     41                        ),
     42                    ''
     43    ) AS permissions
     44FROM channel c
     45         JOIN project_role pr
     46              ON pr.project_id = c.project_id
     47         LEFT JOIN role_permissions rp
     48                   ON rp.role_id = pr.id
     49                       AND rp.permission_name IN ('READ','WRITE')
     50         LEFT JOIN role_permissions_overrides rpo
     51                   ON rpo.role_id = pr.id
     52                       AND rpo.permission_name = rp.permission_name
     53                       AND rpo.project_resource_id = c.project_resource_id
     54GROUP BY c.project_resource_id, c.name,pr.id
     55}}}