refactor: db assignment queries into files
This commit is contained in:
parent
fc63464210
commit
8491491e25
2
db/sql/assignment/create.sql
Normal file
2
db/sql/assignment/create.sql
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
INSERT INTO assignment (eventId, availabilityId, function, startTimestamp, endTimestamp)
|
||||||
|
VALUES ($1, $2, $3, $4, $5);
|
10
db/sql/assignment/read.sql
Normal file
10
db/sql/assignment/read.sql
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
SELECT
|
||||||
|
assignment.eventId,
|
||||||
|
assignment.availabilityId,
|
||||||
|
assignment.function AS "function: Function",
|
||||||
|
assignment.startTimestamp,
|
||||||
|
assignment.endTimestamp
|
||||||
|
FROM assignment
|
||||||
|
WHERE
|
||||||
|
assignment.eventId = $1
|
||||||
|
AND assignment.availabilityId = $2;
|
8
db/sql/assignment/read_all_by_availability.sql
Normal file
8
db/sql/assignment/read_all_by_availability.sql
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
SELECT
|
||||||
|
assignment.eventId,
|
||||||
|
assignment.availabilityId,
|
||||||
|
assignment.function AS "function: Function",
|
||||||
|
assignment.startTimestamp,
|
||||||
|
assignment.endTimestamp
|
||||||
|
FROM assignment
|
||||||
|
WHERE assignment.AvailabilityId = $1;
|
14
db/sql/assignment/read_all_by_daterange_and_user.sql
Normal file
14
db/sql/assignment/read_all_by_daterange_and_user.sql
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
SELECT
|
||||||
|
assignment.eventId,
|
||||||
|
assignment.availabilityId,
|
||||||
|
assignment.function AS "function: Function",
|
||||||
|
assignment.startTimestamp,
|
||||||
|
assignment.endTimestamp
|
||||||
|
FROM assignment
|
||||||
|
JOIN
|
||||||
|
availability ON assignment.availabilityId = availability.id
|
||||||
|
WHERE
|
||||||
|
assignment.starttimestamp::date >= $1
|
||||||
|
AND assignment.starttimestamp::date <= $2
|
||||||
|
AND availability.userId = $3
|
||||||
|
ORDER BY assignment.starttimestamp;
|
8
db/sql/assignment/read_all_by_event.sql
Normal file
8
db/sql/assignment/read_all_by_event.sql
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
SELECT
|
||||||
|
assignment.eventId,
|
||||||
|
assignment.availabilityId,
|
||||||
|
assignment.function AS "function: Function",
|
||||||
|
assignment.startTimestamp,
|
||||||
|
assignment.endTimestamp
|
||||||
|
FROM assignment
|
||||||
|
WHERE assignment.eventId = $1;
|
@ -1,5 +1,5 @@
|
|||||||
use chrono::{NaiveDate, NaiveDateTime};
|
use chrono::{NaiveDate, NaiveDateTime};
|
||||||
use sqlx::{PgPool, query};
|
use sqlx::{PgPool, query, query_file};
|
||||||
|
|
||||||
use super::{AssignmentChangeset, Function, Result};
|
use super::{AssignmentChangeset, Function, Result};
|
||||||
|
|
||||||
@ -19,11 +19,8 @@ impl Assignment {
|
|||||||
availability_id: i32,
|
availability_id: i32,
|
||||||
changeset: AssignmentChangeset,
|
changeset: AssignmentChangeset,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
query!(
|
query_file!(
|
||||||
r##"
|
"sql/assignment/create.sql",
|
||||||
INSERT INTO assignment (eventId, availabilityId, function, startTimestamp, endTimestamp)
|
|
||||||
VALUES ($1, $2, $3, $4, $5);
|
|
||||||
"##,
|
|
||||||
event_id,
|
event_id,
|
||||||
availability_id,
|
availability_id,
|
||||||
changeset.function as Function,
|
changeset.function as Function,
|
||||||
@ -40,23 +37,14 @@ impl Assignment {
|
|||||||
pool: &PgPool,
|
pool: &PgPool,
|
||||||
availability_id: i32,
|
availability_id: i32,
|
||||||
) -> Result<Vec<Assignment>> {
|
) -> Result<Vec<Assignment>> {
|
||||||
let records = query!(
|
let records = query_file!(
|
||||||
r##"
|
"sql/assignment/read_all_by_availability.sql",
|
||||||
SELECT
|
|
||||||
assignment.eventId,
|
|
||||||
assignment.availabilityId,
|
|
||||||
assignment.function AS "function: Function",
|
|
||||||
assignment.startTimestamp,
|
|
||||||
assignment.endTimestamp
|
|
||||||
FROM assignment
|
|
||||||
WHERE assignment.AvailabilityId = $1;
|
|
||||||
"##,
|
|
||||||
availability_id
|
availability_id
|
||||||
)
|
)
|
||||||
.fetch_all(pool)
|
.fetch_all(pool)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
let assignemnets = records
|
let assignments = records
|
||||||
.iter()
|
.iter()
|
||||||
.map(|r| Assignment {
|
.map(|r| Assignment {
|
||||||
event_id: r.eventid,
|
event_id: r.eventid,
|
||||||
@ -67,27 +55,15 @@ impl Assignment {
|
|||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
Ok(assignemnets)
|
Ok(assignments)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn read_all_by_event(pool: &PgPool, event_id: i32) -> Result<Vec<Assignment>> {
|
pub async fn read_all_by_event(pool: &PgPool, event_id: i32) -> Result<Vec<Assignment>> {
|
||||||
let records = query!(
|
let records = query_file!("sql/assignment/read_all_by_event.sql", event_id,)
|
||||||
r##"
|
.fetch_all(pool)
|
||||||
SELECT
|
.await?;
|
||||||
assignment.eventId,
|
|
||||||
assignment.availabilityId,
|
|
||||||
assignment.function AS "function: Function",
|
|
||||||
assignment.startTimestamp,
|
|
||||||
assignment.endTimestamp
|
|
||||||
FROM assignment
|
|
||||||
WHERE assignment.eventId = $1;
|
|
||||||
"##,
|
|
||||||
event_id,
|
|
||||||
)
|
|
||||||
.fetch_all(pool)
|
|
||||||
.await?;
|
|
||||||
|
|
||||||
let assignemnets = records
|
let assignments = records
|
||||||
.iter()
|
.iter()
|
||||||
.map(|r| Assignment {
|
.map(|r| Assignment {
|
||||||
event_id: r.eventid,
|
event_id: r.eventid,
|
||||||
@ -98,7 +74,7 @@ impl Assignment {
|
|||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
Ok(assignemnets)
|
Ok(assignments)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn read_all_by_daterange_and_user(
|
pub async fn read_all_by_daterange_and_user(
|
||||||
@ -106,21 +82,8 @@ impl Assignment {
|
|||||||
date_range: (&NaiveDate, &NaiveDate),
|
date_range: (&NaiveDate, &NaiveDate),
|
||||||
user_id: i32,
|
user_id: i32,
|
||||||
) -> Result<Vec<Assignment>> {
|
) -> Result<Vec<Assignment>> {
|
||||||
let records = query!(
|
let records = query_file!(
|
||||||
r##"
|
"sql/assignment/read_all_by_daterange_and_user.sql",
|
||||||
SELECT
|
|
||||||
assignment.eventId,
|
|
||||||
assignment.availabilityId,
|
|
||||||
assignment.function AS "function: Function",
|
|
||||||
assignment.startTimestamp,
|
|
||||||
assignment.endTimestamp
|
|
||||||
FROM assignment
|
|
||||||
JOIN availability ON assignment.availabilityId = availability.id
|
|
||||||
WHERE assignment.starttimestamp::date >= $1
|
|
||||||
AND assignment.starttimestamp::date <= $2
|
|
||||||
AND availability.userId = $3
|
|
||||||
ORDER BY assignment.starttimestamp;
|
|
||||||
"##,
|
|
||||||
date_range.0,
|
date_range.0,
|
||||||
date_range.1,
|
date_range.1,
|
||||||
user_id
|
user_id
|
||||||
@ -128,7 +91,7 @@ impl Assignment {
|
|||||||
.fetch_all(pool)
|
.fetch_all(pool)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
let assignemnets = records
|
let assignments = records
|
||||||
.iter()
|
.iter()
|
||||||
.map(|r| Assignment {
|
.map(|r| Assignment {
|
||||||
event_id: r.eventid,
|
event_id: r.eventid,
|
||||||
@ -139,7 +102,7 @@ impl Assignment {
|
|||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
Ok(assignemnets)
|
Ok(assignments)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn read(
|
pub async fn read(
|
||||||
@ -147,26 +110,11 @@ impl Assignment {
|
|||||||
event_id: i32,
|
event_id: i32,
|
||||||
availability_id: i32,
|
availability_id: i32,
|
||||||
) -> Result<Option<Assignment>> {
|
) -> Result<Option<Assignment>> {
|
||||||
let record = query!(
|
let record = query_file!("sql/assignment/read.sql", event_id, availability_id)
|
||||||
r##"
|
.fetch_optional(pool)
|
||||||
SELECT
|
.await?;
|
||||||
assignment.eventId,
|
|
||||||
assignment.availabilityId,
|
|
||||||
assignment.function AS "function: Function",
|
|
||||||
assignment.startTimestamp,
|
|
||||||
assignment.endTimestamp
|
|
||||||
FROM assignment
|
|
||||||
WHERE
|
|
||||||
assignment.eventId = $1 AND
|
|
||||||
assignment.availabilityId = $2;
|
|
||||||
"##,
|
|
||||||
event_id,
|
|
||||||
availability_id
|
|
||||||
)
|
|
||||||
.fetch_optional(pool)
|
|
||||||
.await?;
|
|
||||||
|
|
||||||
let assignemnet = record.map(|r| Assignment {
|
let assignment = record.map(|r| Assignment {
|
||||||
event_id: r.eventid,
|
event_id: r.eventid,
|
||||||
availability_id: r.availabilityid,
|
availability_id: r.availabilityid,
|
||||||
function: r.function,
|
function: r.function,
|
||||||
@ -174,7 +122,7 @@ impl Assignment {
|
|||||||
end: r.endtimestamp.naive_utc(),
|
end: r.endtimestamp.naive_utc(),
|
||||||
});
|
});
|
||||||
|
|
||||||
Ok(assignemnet)
|
Ok(assignment)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn update(
|
pub async fn update(
|
||||||
@ -183,7 +131,15 @@ impl Assignment {
|
|||||||
availability_id: i32,
|
availability_id: i32,
|
||||||
changeset: AssignmentChangeset,
|
changeset: AssignmentChangeset,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
query!("UPDATE assignment SET function = $1, startTimestamp = $2, endTimestamp = $3 WHERE eventId = $4 AND availabilityId = $5;", changeset.function as Function, changeset.time.0.and_utc(), changeset.time.1.and_utc(), event_id, availability_id).execute(pool).await?;
|
query!(
|
||||||
|
"UPDATE assignment SET function = $1, startTimestamp = $2, endTimestamp = $3 WHERE eventId = $4 AND availabilityId = $5;",
|
||||||
|
changeset.function as Function,
|
||||||
|
changeset.time.0.and_utc(),
|
||||||
|
changeset.time.1.and_utc(),
|
||||||
|
event_id, availability_id
|
||||||
|
)
|
||||||
|
.execute(pool)
|
||||||
|
.await?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user