Create view to load memberships
This commit is contained in:
		@@ -1,4 +1,5 @@
 | 
				
			|||||||
-- This file should undo anything in `up.sql`
 | 
					-- This file should undo anything in `up.sql`
 | 
				
			||||||
 | 
					drop view if exists families_memberships ;
 | 
				
			||||||
DROP table IF EXISTS memberships ;
 | 
					DROP table IF EXISTS memberships ;
 | 
				
			||||||
DROP table IF EXISTS families;
 | 
					DROP table IF EXISTS families;
 | 
				
			||||||
DROP table IF EXISTS users;
 | 
					DROP table IF EXISTS users;
 | 
				
			||||||
@@ -29,3 +29,43 @@ CREATE TABLE memberships (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    PRIMARY KEY(user_id, family_id)
 | 
					    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 services;
 | 
				
			||||||
pub mod utils;
 | 
					pub mod utils;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pub mod manual_schema;
 | 
				
			||||||
pub mod models;
 | 
					pub mod models;
 | 
				
			||||||
pub mod schema;
 | 
					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