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 sqlx::{PgPool, query};
|
||||
use sqlx::{PgPool, query, query_file};
|
||||
|
||||
use super::{AssignmentChangeset, Function, Result};
|
||||
|
||||
@ -19,11 +19,8 @@ impl Assignment {
|
||||
availability_id: i32,
|
||||
changeset: AssignmentChangeset,
|
||||
) -> Result<()> {
|
||||
query!(
|
||||
r##"
|
||||
INSERT INTO assignment (eventId, availabilityId, function, startTimestamp, endTimestamp)
|
||||
VALUES ($1, $2, $3, $4, $5);
|
||||
"##,
|
||||
query_file!(
|
||||
"sql/assignment/create.sql",
|
||||
event_id,
|
||||
availability_id,
|
||||
changeset.function as Function,
|
||||
@ -40,23 +37,14 @@ impl Assignment {
|
||||
pool: &PgPool,
|
||||
availability_id: i32,
|
||||
) -> Result<Vec<Assignment>> {
|
||||
let records = query!(
|
||||
r##"
|
||||
SELECT
|
||||
assignment.eventId,
|
||||
assignment.availabilityId,
|
||||
assignment.function AS "function: Function",
|
||||
assignment.startTimestamp,
|
||||
assignment.endTimestamp
|
||||
FROM assignment
|
||||
WHERE assignment.AvailabilityId = $1;
|
||||
"##,
|
||||
let records = query_file!(
|
||||
"sql/assignment/read_all_by_availability.sql",
|
||||
availability_id
|
||||
)
|
||||
.fetch_all(pool)
|
||||
.await?;
|
||||
|
||||
let assignemnets = records
|
||||
let assignments = records
|
||||
.iter()
|
||||
.map(|r| Assignment {
|
||||
event_id: r.eventid,
|
||||
@ -67,27 +55,15 @@ impl Assignment {
|
||||
})
|
||||
.collect();
|
||||
|
||||
Ok(assignemnets)
|
||||
Ok(assignments)
|
||||
}
|
||||
|
||||
pub async fn read_all_by_event(pool: &PgPool, event_id: i32) -> Result<Vec<Assignment>> {
|
||||
let records = query!(
|
||||
r##"
|
||||
SELECT
|
||||
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 records = query_file!("sql/assignment/read_all_by_event.sql", event_id,)
|
||||
.fetch_all(pool)
|
||||
.await?;
|
||||
|
||||
let assignemnets = records
|
||||
let assignments = records
|
||||
.iter()
|
||||
.map(|r| Assignment {
|
||||
event_id: r.eventid,
|
||||
@ -98,7 +74,7 @@ impl Assignment {
|
||||
})
|
||||
.collect();
|
||||
|
||||
Ok(assignemnets)
|
||||
Ok(assignments)
|
||||
}
|
||||
|
||||
pub async fn read_all_by_daterange_and_user(
|
||||
@ -106,21 +82,8 @@ impl Assignment {
|
||||
date_range: (&NaiveDate, &NaiveDate),
|
||||
user_id: i32,
|
||||
) -> Result<Vec<Assignment>> {
|
||||
let records = query!(
|
||||
r##"
|
||||
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;
|
||||
"##,
|
||||
let records = query_file!(
|
||||
"sql/assignment/read_all_by_daterange_and_user.sql",
|
||||
date_range.0,
|
||||
date_range.1,
|
||||
user_id
|
||||
@ -128,7 +91,7 @@ impl Assignment {
|
||||
.fetch_all(pool)
|
||||
.await?;
|
||||
|
||||
let assignemnets = records
|
||||
let assignments = records
|
||||
.iter()
|
||||
.map(|r| Assignment {
|
||||
event_id: r.eventid,
|
||||
@ -139,7 +102,7 @@ impl Assignment {
|
||||
})
|
||||
.collect();
|
||||
|
||||
Ok(assignemnets)
|
||||
Ok(assignments)
|
||||
}
|
||||
|
||||
pub async fn read(
|
||||
@ -147,26 +110,11 @@ impl Assignment {
|
||||
event_id: i32,
|
||||
availability_id: i32,
|
||||
) -> Result<Option<Assignment>> {
|
||||
let record = query!(
|
||||
r##"
|
||||
SELECT
|
||||
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 record = query_file!("sql/assignment/read.sql", event_id, availability_id)
|
||||
.fetch_optional(pool)
|
||||
.await?;
|
||||
|
||||
let assignemnet = record.map(|r| Assignment {
|
||||
let assignment = record.map(|r| Assignment {
|
||||
event_id: r.eventid,
|
||||
availability_id: r.availabilityid,
|
||||
function: r.function,
|
||||
@ -174,7 +122,7 @@ impl Assignment {
|
||||
end: r.endtimestamp.naive_utc(),
|
||||
});
|
||||
|
||||
Ok(assignemnet)
|
||||
Ok(assignment)
|
||||
}
|
||||
|
||||
pub async fn update(
|
||||
@ -183,7 +131,15 @@ impl Assignment {
|
||||
availability_id: i32,
|
||||
changeset: AssignmentChangeset,
|
||||
) -> 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(())
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user