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
 | 
			
		||||
@@ -5,5 +5,6 @@ pub mod controllers;
 | 
			
		||||
pub mod services;
 | 
			
		||||
pub mod utils;
 | 
			
		||||
 | 
			
		||||
pub mod manual_schema;
 | 
			
		||||
pub mod models;
 | 
			
		||||
pub mod schema;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										12
									
								
								geneit_backend/src/manual_schema.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								geneit_backend/src/manual_schema.rs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
diesel::table! {
 | 
			
		||||
    families_memberships (user_id, family_id) {
 | 
			
		||||
        user_id -> Int4,
 | 
			
		||||
        family_id -> Int4,
 | 
			
		||||
        name -> Varchar,
 | 
			
		||||
        time_create -> Int8,
 | 
			
		||||
        is_admin -> Bool,
 | 
			
		||||
        invitation_code -> Varchar,
 | 
			
		||||
        count_members -> Int4,
 | 
			
		||||
        count_admins -> Int4,
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user