Create view to load memberships
This commit is contained in:
		@@ -1,4 +1,5 @@
 | 
			
		||||
-- This file should undo anything in `up.sql`
 | 
			
		||||
drop view if exists families_memberships ;
 | 
			
		||||
DROP table IF EXISTS memberships ;
 | 
			
		||||
DROP table IF EXISTS families;
 | 
			
		||||
DROP table IF EXISTS users;
 | 
			
		||||
@@ -28,4 +28,44 @@ CREATE TABLE memberships (
 | 
			
		||||
    is_admin BOOLEAN NOT NULL DEFAULT FALSE,
 | 
			
		||||
 | 
			
		||||
    PRIMARY KEY(user_id, family_id)
 | 
			
		||||
);
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
-- Create views
 | 
			
		||||
create view
 | 
			
		||||
	families_memberships
 | 
			
		||||
as
 | 
			
		||||
select
 | 
			
		||||
	m.user_id ,
 | 
			
		||||
	m.family_id,
 | 
			
		||||
	m.is_admin ,
 | 
			
		||||
	f."name",
 | 
			
		||||
	f.time_create,
 | 
			
		||||
	f.invitation_code,
 | 
			
		||||
	cm.num as count_members,
 | 
			
		||||
	ca.num as count_admins
 | 
			
		||||
from
 | 
			
		||||
	memberships m
 | 
			
		||||
left join families f on
 | 
			
		||||
	f.id = m.family_id
 | 
			
		||||
	-- count members
 | 
			
		||||
left join (
 | 
			
		||||
	select
 | 
			
		||||
		family_id ,
 | 
			
		||||
		count(*) as num
 | 
			
		||||
	from
 | 
			
		||||
		memberships m
 | 
			
		||||
	group by
 | 
			
		||||
		family_id) cm on
 | 
			
		||||
	cm.family_id = m.family_id
 | 
			
		||||
	-- count admins
 | 
			
		||||
left join (
 | 
			
		||||
	select
 | 
			
		||||
		family_id ,
 | 
			
		||||
		count(*) as num
 | 
			
		||||
	from
 | 
			
		||||
		memberships m
 | 
			
		||||
	where
 | 
			
		||||
		m.is_admin = true
 | 
			
		||||
	group by
 | 
			
		||||
		family_id) ca on
 | 
			
		||||
	ca.family_id = m.family_id
 | 
			
		||||
		Reference in New Issue
	
	Block a user