diff --git a/api/src/models/person.rs b/api/src/models/person.rs index 8e98f1d..1d41d8d 100644 --- a/api/src/models/person.rs +++ b/api/src/models/person.rs @@ -11,40 +11,18 @@ pub fn get_person_all(vec: &mut Vec) { let person = Person { person_id: row.get(0), person_name: row.get(1), + cult: row.get(2), }; vec.push(person); } } pub fn get_person_by_ids(vec: &mut Vec, ids: Vec) { - let conn = get_db_conn(); - let mut in_list = "".to_string(); - // TODO: This could probably do with some tidying up - for i in 0..ids.len() { - let num = i + 1; - let num_string = num.to_string(); - if i == 0 { - in_list = format!("${}", &num_string); - } else { - in_list = format!("{}, ${}", in_list, &num_string); - } - } - let query_string = format!( - "SELECT person_id, person_name FROM persons WHERE person_id IN ({})", - in_list - ); - // let id_refs = ids.iter().map(|x| Box::new(x)).collect(); - println!("Atttempting query: \n {}", query_string); - for row in &conn - .query(&query_string, &[&ids[0],&ids[1],&ids[2]])//&ids[..]) - .unwrap() - { - let person = Person { - person_id: row.get(0), - person_name: row.get(1), - }; - vec.push(person); - } + //TODO: In desperate need of refactor, or else ye shall face the n+1 problem!! + + for id in ids.iter() { + get_person_by_id(vec, *id); + }; } pub fn get_person_by_id(vec: &mut Vec, id: i32) { @@ -53,7 +31,7 @@ pub fn get_person_by_id(vec: &mut Vec, id: i32) { let conn = get_db_conn(); for row in &conn .query( - "SELECT person_id, person_name FROM persons WHERE person_id = $1", + "SELECT person_id, person_name, cult FROM persons WHERE person_id = $1", &[&id], ) .unwrap() @@ -61,6 +39,7 @@ pub fn get_person_by_id(vec: &mut Vec, id: i32) { let person = Person { person_id: row.get(0), person_name: row.get(1), + cult: row.get(2), }; vec.push(person); } diff --git a/api/src/types.rs b/api/src/types.rs index f91fe11..a0570a1 100644 --- a/api/src/types.rs +++ b/api/src/types.rs @@ -4,6 +4,7 @@ use serde::Serialize; pub struct Person { pub person_id: i32, pub person_name: String, + pub cult: Option, } #[derive(Serialize)] diff --git a/database/create_cults.sql b/database/create_cults.sql index e9d8608..62c54e4 100644 --- a/database/create_cults.sql +++ b/database/create_cults.sql @@ -8,3 +8,5 @@ CREATE TABLE cults INSERT INTO cults (name) VALUES ('Church of the Latter day dudes'); +INSERT INTO cults (name) + VALUES ('Universal Medicine'); diff --git a/database/create_users.sql b/database/create_users.sql index df654b3..1ffe53a 100644 --- a/database/create_users.sql +++ b/database/create_users.sql @@ -1,18 +1,19 @@ CREATE TABLE persons ( - person_id serial NOT NULL, - person_name VARCHAR(100) +person_id SERIAL NOT NULL, +person_name VARCHAR(100), +cult INTEGER ); -- ALTER TABLE PERSONS owner TO jayylmao; -INSERT INTO persons (person_name) - VALUES ('Tim'); -INSERT INTO persons (person_name) - VALUES ('Bill'); -INSERT INTO persons (person_name) - VALUES ('Bob'); -INSERT INTO persons (person_name) - VALUES ('Hamo'); +INSERT INTO persons (person_name, cult) + VALUES ('Tim', 1); +INSERT INTO persons (person_name, cult) + VALUES ('Bill', 1); +INSERT INTO persons (person_name, cult) + VALUES ('Bob', 2); +INSERT INTO persons (person_name, cult) + VALUES ('Hamo', 2); INSERT INTO persons (person_name) VALUES ('Jerry');