refactor: move sql into own file
This commit is contained in:
parent
10841d493f
commit
c74716cc3a
@ -1,6 +1,6 @@
|
||||
{
|
||||
"db_name": "PostgreSQL",
|
||||
"query": "select\n\tevent.starttimestamp,\n\tevent.endtimestamp,\n\tevent.amountofposten,\n event.voluntaryfuehrungsassistent,\n event.voluntarywachhabender,\n\tlocation.name as locationName,\n\tevent.name as eventName,\n\tarray (\n\tselect\n\t\trow (user_.name, assignment.function) ::simpleAssignment\n\tfrom\n\t\tassignment\n\tjoin availability on\n\t\tassignment.availabilityid = availability.id\n\tjoin user_ on\n\t\tavailability.userid = user_.id\n\twhere\n\t\tassignment.eventId = event.id) as \"assignments: Vec<SimpleAssignment>\",\n\t\tarray (\n\tselect\n\t\tvehicle.station || ' ' || vehicle.radiocallname\n\tfrom\n\t\tvehicleassignment\n\tjoin vehicle on\n\t\tvehicleassignment.vehicleId = vehicle.id\n\twhere\n\t\tvehicleassignment.eventId = event.id) as vehicles\nfrom\n\tevent\njoin location on\n\tevent.locationId = location.id\n where event.starttimestamp::date >= $1 and event.starttimestamp::date <= $2 and location.areaId = $3\n order by event.starttimestamp",
|
||||
"query": "SELECT\n event.starttimestamp,\n event.endtimestamp,\n event.amountofposten,\n event.voluntaryfuehrungsassistent,\n event.voluntarywachhabender,\n location.name AS locationName,\n event.name AS eventName,\n array (\n SELECT\n row (user_.name, assignment.function) ::simpleAssignment\n FROM\n assignment\n JOIN availability on\n assignment.availabilityid = availability.id\n JOIN user_ on\n availability.userid = user_.id\n WHERE\n assignment.eventId = event.id) AS \"assignments: Vec<SimpleAssignment>\",\n array (\n SELECT\n vehicle.station || ' ' || vehicle.radiocallname\n FROM\n vehicleassignment\n JOIN vehicle on\n vehicleassignment.vehicleId = vehicle.id\n WHERE\n vehicleassignment.eventId = event.id) AS vehicles\n FROM\n event\n JOIN location on\n event.locationId = location.id\n WHERE\n event.starttimestamp::date >= $1\n AND event.starttimestamp::date <= $2\n AND location.areaId = $3\n ORDER BY\n event.starttimestamp\n",
|
||||
"describe": {
|
||||
"columns": [
|
||||
{
|
||||
@ -102,5 +102,5 @@
|
||||
null
|
||||
]
|
||||
},
|
||||
"hash": "366b4004828057e3ab47704c4856ea4e41c92af0a388862f77c37ea611a5d193"
|
||||
"hash": "8a9f517c18b13e6cbf47404d69c2e1c59660250aa5d1074d4da9c0589d0a6bb3"
|
||||
}
|
38
db/sql/export_event_row/read_all_by_timerange_and_area.sql
Normal file
38
db/sql/export_event_row/read_all_by_timerange_and_area.sql
Normal file
@ -0,0 +1,38 @@
|
||||
SELECT
|
||||
event.starttimestamp,
|
||||
event.endtimestamp,
|
||||
event.amountofposten,
|
||||
event.voluntaryfuehrungsassistent,
|
||||
event.voluntarywachhabender,
|
||||
location.name AS locationName,
|
||||
event.name AS eventName,
|
||||
array (
|
||||
SELECT
|
||||
row (user_.name, assignment.function) ::simpleAssignment
|
||||
FROM
|
||||
assignment
|
||||
JOIN availability on
|
||||
assignment.availabilityid = availability.id
|
||||
JOIN user_ on
|
||||
availability.userid = user_.id
|
||||
WHERE
|
||||
assignment.eventId = event.id) AS "assignments: Vec<SimpleAssignment>",
|
||||
array (
|
||||
SELECT
|
||||
vehicle.station || ' ' || vehicle.radiocallname
|
||||
FROM
|
||||
vehicleassignment
|
||||
JOIN vehicle on
|
||||
vehicleassignment.vehicleId = vehicle.id
|
||||
WHERE
|
||||
vehicleassignment.eventId = event.id) AS vehicles
|
||||
FROM
|
||||
event
|
||||
JOIN location on
|
||||
event.locationId = location.id
|
||||
WHERE
|
||||
event.starttimestamp::date >= $1
|
||||
AND event.starttimestamp::date <= $2
|
||||
AND location.areaId = $3
|
||||
ORDER BY
|
||||
event.starttimestamp
|
@ -2,7 +2,7 @@ use chrono::{NaiveDate, NaiveDateTime};
|
||||
use sqlx::{
|
||||
PgPool,
|
||||
postgres::{PgHasArrayType, PgTypeInfo},
|
||||
query,
|
||||
query_file,
|
||||
};
|
||||
|
||||
use super::{Function, Result};
|
||||
@ -33,49 +33,16 @@ impl PgHasArrayType for SimpleAssignment {
|
||||
}
|
||||
|
||||
impl ExportEventRow {
|
||||
pub async fn read_all_for_timerange_and_area(
|
||||
pub async fn read_all_by_timerange_and_area(
|
||||
pool: &PgPool,
|
||||
time: (NaiveDate, NaiveDate),
|
||||
area: i32,
|
||||
) -> Result<Vec<ExportEventRow>> {
|
||||
let rows = query!(
|
||||
"select
|
||||
event.starttimestamp,
|
||||
event.endtimestamp,
|
||||
event.amountofposten,
|
||||
event.voluntaryfuehrungsassistent,
|
||||
event.voluntarywachhabender,
|
||||
location.name as locationName,
|
||||
event.name as eventName,
|
||||
array (
|
||||
select
|
||||
row (user_.name, assignment.function) ::simpleAssignment
|
||||
from
|
||||
assignment
|
||||
join availability on
|
||||
assignment.availabilityid = availability.id
|
||||
join user_ on
|
||||
availability.userid = user_.id
|
||||
where
|
||||
assignment.eventId = event.id) as \"assignments: Vec<SimpleAssignment>\",
|
||||
array (
|
||||
select
|
||||
vehicle.station || ' ' || vehicle.radiocallname
|
||||
from
|
||||
vehicleassignment
|
||||
join vehicle on
|
||||
vehicleassignment.vehicleId = vehicle.id
|
||||
where
|
||||
vehicleassignment.eventId = event.id) as vehicles
|
||||
from
|
||||
event
|
||||
join location on
|
||||
event.locationId = location.id
|
||||
where event.starttimestamp::date >= $1 and event.starttimestamp::date <= $2 and location.areaId = $3
|
||||
order by event.starttimestamp",
|
||||
time.0,
|
||||
time.1,
|
||||
area
|
||||
let rows = query_file!(
|
||||
"sql/export_event_row/read_all_by_timerange_and_area.sql",
|
||||
time.0,
|
||||
time.1,
|
||||
area
|
||||
)
|
||||
.fetch_all(pool)
|
||||
.await?;
|
||||
|
@ -134,7 +134,7 @@ pub async fn get(
|
||||
|
||||
let area = query.area.unwrap_or(user.area_id);
|
||||
|
||||
let rows_to_export = ExportEventRow::read_all_for_timerange_and_area(
|
||||
let rows_to_export = ExportEventRow::read_all_by_timerange_and_area(
|
||||
pool.get_ref(),
|
||||
(query.start, query.end),
|
||||
area,
|
||||
|
Loading…
x
Reference in New Issue
Block a user