Skip to content

Commit

Permalink
feat: added cult relation
Browse files Browse the repository at this point in the history
  • Loading branch information
jayy-lmao committed Jan 13, 2020
1 parent 65dcf36 commit 28f3bc5
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 39 deletions.
37 changes: 8 additions & 29 deletions api/src/models/person.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,40 +11,18 @@ pub fn get_person_all(vec: &mut Vec<Person>) {
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<Person>, ids: Vec<i32>) {
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<Person>, id: i32) {
Expand All @@ -53,14 +31,15 @@ pub fn get_person_by_id(vec: &mut Vec<Person>, 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()
{
let person = Person {
person_id: row.get(0),
person_name: row.get(1),
cult: row.get(2),
};
vec.push(person);
}
Expand Down
1 change: 1 addition & 0 deletions api/src/types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ use serde::Serialize;
pub struct Person {
pub person_id: i32,
pub person_name: String,
pub cult: Option<i32>,
}

#[derive(Serialize)]
Expand Down
2 changes: 2 additions & 0 deletions database/create_cults.sql
Original file line number Diff line number Diff line change
Expand Up @@ -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');
21 changes: 11 additions & 10 deletions database/create_users.sql
Original file line number Diff line number Diff line change
@@ -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');

0 comments on commit 28f3bc5

Please sign in to comment.