diff --git a/db/.sqlx/query-a05ae42af4e579697f6ddae93aa52fbc826a58edb71a23b54a589c56e1b50378.json b/db/.sqlx/query-604c4d56e84c5b36a0c217a4b6fd6920d845b62bf05249e4f5fb4acad79fe2b2.json
similarity index 65%
rename from db/.sqlx/query-a05ae42af4e579697f6ddae93aa52fbc826a58edb71a23b54a589c56e1b50378.json
rename to db/.sqlx/query-604c4d56e84c5b36a0c217a4b6fd6920d845b62bf05249e4f5fb4acad79fe2b2.json
index 7919570b..73a84e1d 100644
--- a/db/.sqlx/query-a05ae42af4e579697f6ddae93aa52fbc826a58edb71a23b54a589c56e1b50378.json
+++ b/db/.sqlx/query-604c4d56e84c5b36a0c217a4b6fd6920d845b62bf05249e4f5fb4acad79fe2b2.json
@@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
- "query": "\n SELECT\n availability.id,\n availability.userId,\n availability.startTimestamp,\n availability.endTimestamp,\n availability.comment,\n user_.name,\n user_.email,\n user_.password,\n user_.salt,\n user_.role AS \"role: Role\",\n user_.function AS \"function: UserFunction\",\n user_.areaId,\n user_.locked,\n user_.lastLogin,\n user_.receiveNotifications,\n area.name AS areaName\n FROM availability\n JOIN user_ ON availability.userId = user_.id\n JOIN area ON user_.areaId = area.id\n WHERE user_.areaId = $1 AND\n availability.starttimestamp::date >= $2 AND\n availability.starttimestamp::date <= $3;\n ",
+ "query": "SELECT\n availability.id,\n availability.userId,\n availability.startTimestamp,\n availability.endTimestamp,\n availability.comment,\n user_.name,\n user_.email,\n user_.password,\n user_.salt,\n user_.role AS \"role: Role\",\n user_.function AS \"function: UserFunction\",\n user_.areaId,\n user_.locked,\n user_.lastLogin,\n user_.receiveNotifications,\n area.name AS areaName\nFROM availability\nJOIN\n user_ ON availability.userId = user_.id\nJOIN\n area ON user_.areaId = area.id\nWHERE\n user_.areaId = $1\n AND availability.starttimestamp::date >= $2\n AND availability.starttimestamp::date <= $3;\n",
"describe": {
"columns": [
{
@@ -139,5 +139,5 @@
false
]
},
- "hash": "a05ae42af4e579697f6ddae93aa52fbc826a58edb71a23b54a589c56e1b50378"
+ "hash": "604c4d56e84c5b36a0c217a4b6fd6920d845b62bf05249e4f5fb4acad79fe2b2"
}
diff --git a/db/.sqlx/query-1b85bca9dc5c0ec4568a07846ccda76468e81d9335548ef6f8b25c6e290b9cd0.json b/db/.sqlx/query-79daa9585c09f2f98db217067d7bd634440dfff960c34404fe7acc16fbc9b0fc.json
similarity index 66%
rename from db/.sqlx/query-1b85bca9dc5c0ec4568a07846ccda76468e81d9335548ef6f8b25c6e290b9cd0.json
rename to db/.sqlx/query-79daa9585c09f2f98db217067d7bd634440dfff960c34404fe7acc16fbc9b0fc.json
index d4e43cc3..4ddd3c9f 100644
--- a/db/.sqlx/query-1b85bca9dc5c0ec4568a07846ccda76468e81d9335548ef6f8b25c6e290b9cd0.json
+++ b/db/.sqlx/query-79daa9585c09f2f98db217067d7bd634440dfff960c34404fe7acc16fbc9b0fc.json
@@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
- "query": "\n SELECT\n availability.id,\n availability.userId,\n availability.startTimestamp,\n availability.endTimestamp,\n availability.comment,\n user_.name,\n user_.email,\n user_.password,\n user_.salt,\n user_.role AS \"role: Role\",\n user_.function AS \"function: UserFunction\",\n user_.areaId,\n user_.locked,\n user_.lastLogin,\n user_.receiveNotifications\n FROM availability\n LEFT JOIN assignment ON availability.Id = assignment.availabilityId\n JOIN user_ ON availability.userId = user_.id\n WHERE availability.id = $1;\n ",
+ "query": "SELECT\n availability.id,\n availability.userId,\n availability.startTimestamp,\n availability.endTimestamp,\n availability.comment,\n user_.name,\n user_.email,\n user_.password,\n user_.salt,\n user_.role AS \"role: Role\",\n user_.function AS \"function: UserFunction\",\n user_.areaId,\n user_.locked,\n user_.lastLogin,\n user_.receiveNotifications\nFROM availability\nJOIN\n user_ ON availability.userId = user_.id\nWHERE\n availability.id = $1;\n",
"describe": {
"columns": [
{
@@ -131,5 +131,5 @@
false
]
},
- "hash": "1b85bca9dc5c0ec4568a07846ccda76468e81d9335548ef6f8b25c6e290b9cd0"
+ "hash": "79daa9585c09f2f98db217067d7bd634440dfff960c34404fe7acc16fbc9b0fc"
}
diff --git a/db/sql/availability/read_all_by_daterange_and_area_including_user_for_export.sql b/db/sql/availability/read_all_by_daterange_and_area_including_user_for_export.sql
new file mode 100644
index 00000000..1dd8bd95
--- /dev/null
+++ b/db/sql/availability/read_all_by_daterange_and_area_including_user_for_export.sql
@@ -0,0 +1,26 @@
+SELECT
+ availability.id,
+ availability.userId,
+ availability.startTimestamp,
+ availability.endTimestamp,
+ availability.comment,
+ user_.name,
+ user_.email,
+ user_.password,
+ user_.salt,
+ user_.role AS "role: Role",
+ user_.function AS "function: UserFunction",
+ user_.areaId,
+ user_.locked,
+ user_.lastLogin,
+ user_.receiveNotifications,
+ area.name AS areaName
+FROM availability
+JOIN
+ user_ ON availability.userId = user_.id
+JOIN
+ area ON user_.areaId = area.id
+WHERE
+ user_.areaId = $1
+ AND availability.starttimestamp::date >= $2
+ AND availability.starttimestamp::date <= $3;
diff --git a/db/sql/availability/read_including_user.sql b/db/sql/availability/read_including_user.sql
new file mode 100644
index 00000000..24e86baf
--- /dev/null
+++ b/db/sql/availability/read_including_user.sql
@@ -0,0 +1,21 @@
+SELECT
+ availability.id,
+ availability.userId,
+ availability.startTimestamp,
+ availability.endTimestamp,
+ availability.comment,
+ user_.name,
+ user_.email,
+ user_.password,
+ user_.salt,
+ user_.role AS "role: Role",
+ user_.function AS "function: UserFunction",
+ user_.areaId,
+ user_.locked,
+ user_.lastLogin,
+ user_.receiveNotifications
+FROM availability
+JOIN
+ user_ ON availability.userId = user_.id
+WHERE
+ availability.id = $1;
diff --git a/db/src/models/assignment_changeset.rs b/db/src/models/assignment_changeset.rs
index 36ad5b31..aaba0302 100644
--- a/db/src/models/assignment_changeset.rs
+++ b/db/src/models/assignment_changeset.rs
@@ -28,7 +28,7 @@ impl<'a> AsyncValidate<'a> for AssignmentChangeset {
context: &'a Self::Context,
) -> Result<(), crate::validation::AsyncValidateError> {
let Some(availability) =
- Availability::read_by_id_including_user(context.pool, context.availability_id).await?
+ Availability::read_including_user(context.pool, context.availability_id).await?
else {
return Err(AsyncValidateError::new(
"Angegebener Verfügbarkeit des Nutzers existiert nicht.",
diff --git a/db/src/models/availability.rs b/db/src/models/availability.rs
index 25177c42..338b3b29 100644
--- a/db/src/models/availability.rs
+++ b/db/src/models/availability.rs
@@ -73,6 +73,7 @@ impl Availability {
Ok(availabilities)
}
+ /// loads availabilities for the area and the same day as the start date and which fully lie inside the daterange
pub async fn read_all_by_daterange_and_area_including_user_for_event_planning(
pool: &PgPool,
date_range: (NaiveDateTime, NaiveDateTime),
@@ -116,34 +117,10 @@ impl Availability {
Ok(availabilities)
}
- pub async fn read_by_id_including_user(pool: &PgPool, id: i32) -> Result