| | 56 | |
| | 57 | == Поглед за групирање на топици и проекти за прикажување на почетната страница |
| | 58 | |
| | 59 | {{{ |
| | 60 | create or replace view v_named_threads as |
| | 61 | WITH topics_projects AS (SELECT pr.id, |
| | 62 | pr.title, |
| | 63 | 'projects'::text AS "type" |
| | 64 | FROM project_thread pr |
| | 65 | UNION |
| | 66 | SELECT topic_thread.id, |
| | 67 | topic_thread.title, |
| | 68 | 'topics'::text AS "type" |
| | 69 | FROM topic_thread), |
| | 70 | topics_projects_threads AS (SELECT t.id, |
| | 71 | t.content, |
| | 72 | tp.type, |
| | 73 | tp.title, |
| | 74 | u.username, |
| | 75 | u.id AS user_id, |
| | 76 | t.created_at |
| | 77 | FROM thread t |
| | 78 | JOIN users u ON u.id = t.is_created_by |
| | 79 | JOIN topics_projects tp ON tp.id = t.id) |
| | 80 | , |
| | 81 | named_threads_tags as (select tt.thread_id as "id", |
| | 82 | array_agg(tt.tag_name) as "tags" |
| | 83 | from tag_assigned_to_thread tt |
| | 84 | where tt.thread_id in (select id from topics_projects_threads) |
| | 85 | group by tt.thread_id) |
| | 86 | SELECT tpt.id, |
| | 87 | tpt.content, |
| | 88 | tpt.title, |
| | 89 | tpt.type, |
| | 90 | tpt.username, |
| | 91 | tpt.user_id, |
| | 92 | tpt.created_at, |
| | 93 | coalesce((select ntt.tags as "tags" |
| | 94 | from named_threads_tags ntt |
| | 95 | where ntt.id = tpt.id),'{}') as "tags" |
| | 96 | FROM topics_projects_threads tpt; |
| | 97 | }}} |