Changes between Version 1 and Version 2 of AdvancedApplicationDevelopment


Ignore:
Timestamp:
09/21/25 21:31:12 (36 hours ago)
Author:
225144
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedApplicationDevelopment

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