2023-08-02 12:44:51 -04:00
|
|
|
CREATE VIEW community_view AS
|
|
|
|
with all_community AS (
|
|
|
|
SELECT
|
|
|
|
*,
|
|
|
|
(
|
|
|
|
SELECT
|
|
|
|
name
|
|
|
|
FROM
|
|
|
|
user_ u
|
|
|
|
WHERE
|
|
|
|
c.creator_id = u.id) AS creator_name,
|
|
|
|
(
|
|
|
|
SELECT
|
|
|
|
name
|
|
|
|
FROM
|
|
|
|
category ct
|
|
|
|
WHERE
|
|
|
|
c.category_id = ct.id) AS category_name,
|
|
|
|
(
|
|
|
|
SELECT
|
|
|
|
count(*)
|
|
|
|
FROM
|
|
|
|
community_follower cf
|
|
|
|
WHERE
|
|
|
|
cf.community_id = c.id) AS number_of_subscribers,
|
|
|
|
(
|
|
|
|
SELECT
|
|
|
|
count(*)
|
|
|
|
FROM
|
|
|
|
post p
|
|
|
|
WHERE
|
|
|
|
p.community_id = c.id) AS number_of_posts,
|
|
|
|
(
|
|
|
|
SELECT
|
|
|
|
count(*)
|
|
|
|
FROM
|
|
|
|
comment co,
|
|
|
|
post p
|
|
|
|
WHERE
|
|
|
|
c.id = p.community_id
|
|
|
|
AND p.id = co.post_id) AS number_of_comments
|
|
|
|
FROM
|
|
|
|
community c
|
2019-04-05 02:26:38 -04:00
|
|
|
)
|
2023-08-02 12:44:51 -04:00
|
|
|
SELECT
|
|
|
|
ac.*,
|
|
|
|
u.id AS user_id,
|
|
|
|
(
|
|
|
|
SELECT
|
|
|
|
cf.id::boolean
|
|
|
|
FROM
|
|
|
|
community_follower cf
|
|
|
|
WHERE
|
|
|
|
u.id = cf.user_id
|
|
|
|
AND ac.id = cf.community_id) AS subscribed
|
|
|
|
FROM
|
|
|
|
user_ u
|
|
|
|
CROSS JOIN all_community ac
|
|
|
|
UNION ALL
|
|
|
|
SELECT
|
|
|
|
ac.*,
|
|
|
|
NULL AS user_id,
|
|
|
|
NULL AS subscribed
|
|
|
|
FROM
|
|
|
|
all_community ac;
|
2019-04-05 02:26:38 -04:00
|
|
|
|
2023-08-02 12:44:51 -04:00
|
|
|
CREATE VIEW community_moderator_view AS
|
|
|
|
SELECT
|
|
|
|
*,
|
|
|
|
(
|
|
|
|
SELECT
|
|
|
|
name
|
|
|
|
FROM
|
|
|
|
user_ u
|
|
|
|
WHERE
|
|
|
|
cm.user_id = u.id) AS user_name,
|
|
|
|
(
|
|
|
|
SELECT
|
|
|
|
name
|
|
|
|
FROM
|
|
|
|
community c
|
|
|
|
WHERE
|
|
|
|
cm.community_id = c.id) AS community_name
|
|
|
|
FROM
|
|
|
|
community_moderator cm;
|
2019-04-05 02:26:38 -04:00
|
|
|
|
2023-08-02 12:44:51 -04:00
|
|
|
CREATE VIEW community_follower_view AS
|
|
|
|
SELECT
|
|
|
|
*,
|
|
|
|
(
|
|
|
|
SELECT
|
|
|
|
name
|
|
|
|
FROM
|
|
|
|
user_ u
|
|
|
|
WHERE
|
|
|
|
cf.user_id = u.id) AS user_name,
|
|
|
|
(
|
|
|
|
SELECT
|
|
|
|
name
|
|
|
|
FROM
|
|
|
|
community c
|
|
|
|
WHERE
|
|
|
|
cf.community_id = c.id) AS community_name
|
|
|
|
FROM
|
|
|
|
community_follower cf;
|
2019-04-05 02:26:38 -04:00
|
|
|
|
2023-08-02 12:44:51 -04:00
|
|
|
CREATE VIEW community_user_ban_view AS
|
|
|
|
SELECT
|
|
|
|
*,
|
|
|
|
(
|
|
|
|
SELECT
|
|
|
|
name
|
|
|
|
FROM
|
|
|
|
user_ u
|
|
|
|
WHERE
|
|
|
|
cm.user_id = u.id) AS user_name,
|
|
|
|
(
|
|
|
|
SELECT
|
|
|
|
name
|
|
|
|
FROM
|
|
|
|
community c
|
|
|
|
WHERE
|
|
|
|
cm.community_id = c.id) AS community_name
|
|
|
|
FROM
|
|
|
|
community_user_ban cm;
|
2019-04-03 16:59:37 -04:00
|
|
|
|
2023-08-02 12:44:51 -04:00
|
|
|
CREATE VIEW site_view AS
|
|
|
|
SELECT
|
|
|
|
*,
|
|
|
|
(
|
|
|
|
SELECT
|
|
|
|
name
|
|
|
|
FROM
|
|
|
|
user_ u
|
|
|
|
WHERE
|
|
|
|
s.creator_id = u.id) AS creator_name,
|
|
|
|
(
|
|
|
|
SELECT
|
|
|
|
count(*)
|
|
|
|
FROM
|
|
|
|
user_) AS number_of_users,
|
|
|
|
(
|
|
|
|
SELECT
|
|
|
|
count(*)
|
|
|
|
FROM
|
|
|
|
post) AS number_of_posts,
|
|
|
|
(
|
|
|
|
SELECT
|
|
|
|
count(*)
|
|
|
|
FROM
|
|
|
|
comment) AS number_of_comments
|
|
|
|
FROM
|
|
|
|
site s;
|
2019-04-03 16:59:37 -04:00
|
|
|
|