refactor: move sql into own file
This commit is contained in:
parent
10841d493f
commit
c74716cc3a
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"db_name": "PostgreSQL",
|
"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": {
|
"describe": {
|
||||||
"columns": [
|
"columns": [
|
||||||
{
|
{
|
||||||
@ -102,5 +102,5 @@
|
|||||||
null
|
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::{
|
use sqlx::{
|
||||||
PgPool,
|
PgPool,
|
||||||
postgres::{PgHasArrayType, PgTypeInfo},
|
postgres::{PgHasArrayType, PgTypeInfo},
|
||||||
query,
|
query_file,
|
||||||
};
|
};
|
||||||
|
|
||||||
use super::{Function, Result};
|
use super::{Function, Result};
|
||||||
@ -33,49 +33,16 @@ impl PgHasArrayType for SimpleAssignment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl ExportEventRow {
|
impl ExportEventRow {
|
||||||
pub async fn read_all_for_timerange_and_area(
|
pub async fn read_all_by_timerange_and_area(
|
||||||
pool: &PgPool,
|
pool: &PgPool,
|
||||||
time: (NaiveDate, NaiveDate),
|
time: (NaiveDate, NaiveDate),
|
||||||
area: i32,
|
area: i32,
|
||||||
) -> Result<Vec<ExportEventRow>> {
|
) -> Result<Vec<ExportEventRow>> {
|
||||||
let rows = query!(
|
let rows = query_file!(
|
||||||
"select
|
"sql/export_event_row/read_all_by_timerange_and_area.sql",
|
||||||
event.starttimestamp,
|
time.0,
|
||||||
event.endtimestamp,
|
time.1,
|
||||||
event.amountofposten,
|
area
|
||||||
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
|
|
||||||
)
|
)
|
||||||
.fetch_all(pool)
|
.fetch_all(pool)
|
||||||
.await?;
|
.await?;
|
||||||
|
@ -134,7 +134,7 @@ pub async fn get(
|
|||||||
|
|
||||||
let area = query.area.unwrap_or(user.area_id);
|
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(),
|
pool.get_ref(),
|
||||||
(query.start, query.end),
|
(query.start, query.end),
|
||||||
area,
|
area,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user