feat: add crossareal to availability

This commit is contained in:
Max Hohlfeld 2025-07-24 15:18:47 +02:00
parent f88d759209
commit 5063933f33
16 changed files with 136 additions and 70 deletions

View File

@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
"query": "SELECT\n availability.id,\n availability.userId,\n availability.startTimestamp,\n availability.endTimestamp,\n availability.comment\nFROM availability\nWHERE\n availability.userId = $1\n AND availability.starttimestamp::date = $2\nORDER BY availability.starttimestamp;\n",
"query": "SELECT\n availability.id,\n availability.userId,\n availability.startTimestamp,\n availability.endTimestamp,\n availability.comment,\n availability.crossAreal\nFROM availability\nWHERE\n availability.userId = $1\n AND availability.starttimestamp::date >= $2\n AND availability.endtimestamp::date <= $3\nORDER BY availability.starttimestamp;\n",
"describe": {
"columns": [
{
@ -27,11 +27,17 @@
"ordinal": 4,
"name": "comment",
"type_info": "Text"
},
{
"ordinal": 5,
"name": "crossareal",
"type_info": "Bool"
}
],
"parameters": {
"Left": [
"Int4",
"Date",
"Date"
]
},
@ -40,8 +46,9 @@
false,
false,
false,
true
true,
false
]
},
"hash": "ec5dfa3b6bcc1cc70d34287e1405c0a6e2c15d92e6e8f259b4d1e06d93ed55e7"
"hash": "1b519beaaddbe12cfe06a47f052d46f39029fdd565f4ae82c4b42452f5c965ca"
}

View File

@ -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 FROM availability\n WHERE availability.userId = $1\n AND (availability.endtimestamp = $2\n OR availability.starttimestamp = $3)\n AND (availability.id <> $4 OR $4 IS NULL);\n ",
"query": "\n SELECT\n availability.id,\n availability.userId,\n availability.startTimestamp,\n availability.endTimestamp,\n availability.comment,\n availability.crossAreal\n FROM availability\n WHERE availability.userId = $1\n AND (availability.endtimestamp = $2\n OR availability.starttimestamp = $3)\n AND (availability.id <> $4 OR $4 IS NULL);\n ",
"describe": {
"columns": [
{
@ -27,6 +27,11 @@
"ordinal": 4,
"name": "comment",
"type_info": "Text"
},
{
"ordinal": 5,
"name": "crossareal",
"type_info": "Bool"
}
],
"parameters": {
@ -42,8 +47,9 @@
false,
false,
false,
true
true,
false
]
},
"hash": "2288f64f63f07e7dd947c036e5c2be4c563788b3b988b721bd12797fd19a7a95"
"hash": "4fd374644a1a098e80aa026d62bac76ed60871d96f7034d8e055e9e830de48de"
}

View File

@ -27,6 +27,11 @@
"ordinal": 4,
"name": "endtimestamp",
"type_info": "Timestamptz"
},
{
"ordinal": 5,
"name": "crossareal",
"type_info": "Bool"
}
],
"parameters": {
@ -39,6 +44,7 @@
false,
true,
false,
false,
false
]
},

View File

@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
"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",
"query": "SELECT\n availability.id,\n availability.userId,\n availability.startTimestamp,\n availability.endTimestamp,\n availability.comment,\n availability.crossAreal,\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": [
{
@ -30,26 +30,31 @@
},
{
"ordinal": 5,
"name": "crossareal",
"type_info": "Bool"
},
{
"ordinal": 6,
"name": "name",
"type_info": "Text"
},
{
"ordinal": 6,
"ordinal": 7,
"name": "email",
"type_info": "Text"
},
{
"ordinal": 7,
"ordinal": 8,
"name": "password",
"type_info": "Text"
},
{
"ordinal": 8,
"ordinal": 9,
"name": "salt",
"type_info": "Text"
},
{
"ordinal": 9,
"ordinal": 10,
"name": "role: Role",
"type_info": {
"Custom": {
@ -65,7 +70,7 @@
}
},
{
"ordinal": 10,
"ordinal": 11,
"name": "function: UserFunction",
"type_info": {
"Custom": {
@ -88,29 +93,36 @@
}
},
{
"ordinal": 11,
"ordinal": 12,
"name": "areaid",
"type_info": "Int4"
},
{
"ordinal": 12,
"ordinal": 13,
"name": "locked",
"type_info": "Bool"
},
{
"ordinal": 13,
"ordinal": 14,
"name": "lastlogin",
"type_info": "Timestamptz"
},
{
"ordinal": 14,
"ordinal": 15,
"name": "receivenotifications",
"type_info": "Bool"
},
{
"ordinal": 16,
"name": "areaname",
"type_info": "Text"
}
],
"parameters": {
"Left": [
"Int4"
"Int4",
"Date",
"Date"
]
},
"nullable": [
@ -121,6 +133,7 @@
true,
false,
false,
false,
true,
true,
false,
@ -128,8 +141,9 @@
false,
false,
true,
false,
false
]
},
"hash": "79daa9585c09f2f98db217067d7bd634440dfff960c34404fe7acc16fbc9b0fc"
"hash": "753fe13e53c2a9e52c2b7bbe3d2b21e27dab198f91ef487160424a64d6ccfa84"
}

View File

@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
"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",
"query": "SELECT\n availability.id,\n availability.userId,\n availability.startTimestamp,\n availability.endTimestamp,\n availability.comment,\n availability.crossAreal,\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.starttimestamp::date = $1\n AND user_.areaId = $2\n AND availability.startTimestamp <= $3\n AND availability.endTimestamp >= $4;\n",
"describe": {
"columns": [
{
@ -30,26 +30,31 @@
},
{
"ordinal": 5,
"name": "crossareal",
"type_info": "Bool"
},
{
"ordinal": 6,
"name": "name",
"type_info": "Text"
},
{
"ordinal": 6,
"ordinal": 7,
"name": "email",
"type_info": "Text"
},
{
"ordinal": 7,
"ordinal": 8,
"name": "password",
"type_info": "Text"
},
{
"ordinal": 8,
"ordinal": 9,
"name": "salt",
"type_info": "Text"
},
{
"ordinal": 9,
"ordinal": 10,
"name": "role: Role",
"type_info": {
"Custom": {
@ -65,7 +70,7 @@
}
},
{
"ordinal": 10,
"ordinal": 11,
"name": "function: UserFunction",
"type_info": {
"Custom": {
@ -88,36 +93,32 @@
}
},
{
"ordinal": 11,
"ordinal": 12,
"name": "areaid",
"type_info": "Int4"
},
{
"ordinal": 12,
"ordinal": 13,
"name": "locked",
"type_info": "Bool"
},
{
"ordinal": 13,
"ordinal": 14,
"name": "lastlogin",
"type_info": "Timestamptz"
},
{
"ordinal": 14,
"ordinal": 15,
"name": "receivenotifications",
"type_info": "Bool"
},
{
"ordinal": 15,
"name": "areaname",
"type_info": "Text"
}
],
"parameters": {
"Left": [
"Int4",
"Date",
"Date"
"Int4",
"Timestamptz",
"Timestamptz"
]
},
"nullable": [
@ -128,6 +129,7 @@
true,
false,
false,
false,
true,
true,
false,
@ -135,9 +137,8 @@
false,
false,
true,
false,
false
]
},
"hash": "604c4d56e84c5b36a0c217a4b6fd6920d845b62bf05249e4f5fb4acad79fe2b2"
"hash": "805beba484999648862eb541beb15dc9245601ff55e23eb97a8795b8a4380682"
}

View File

@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
"query": "SELECT\n availability.id,\n availability.userId,\n availability.startTimestamp,\n availability.endTimestamp,\n availability.comment\nFROM availability\nWHERE\n availability.userId = $1\n AND availability.starttimestamp::date >= $2\n AND availability.endtimestamp::date <= $3\nORDER BY availability.starttimestamp;\n",
"query": "SELECT\n availability.id,\n availability.userId,\n availability.startTimestamp,\n availability.endTimestamp,\n availability.comment,\n availability.crossAreal\nFROM availability\nWHERE\n availability.userId = $1\n AND availability.starttimestamp::date = $2\nORDER BY availability.starttimestamp;\n",
"describe": {
"columns": [
{
@ -27,12 +27,16 @@
"ordinal": 4,
"name": "comment",
"type_info": "Text"
},
{
"ordinal": 5,
"name": "crossareal",
"type_info": "Bool"
}
],
"parameters": {
"Left": [
"Int4",
"Date",
"Date"
]
},
@ -41,8 +45,9 @@
false,
false,
false,
true
true,
false
]
},
"hash": "996b63cfc4e08c874f24286c2467e63fc1c981807dfa25b42a9d52124f3096e6"
"hash": "89ca3e15e8c4e2d986f103505e97d9e2d8dc3404b78dfb7dca84f5ab02e3a03a"
}

View File

@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
"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.starttimestamp::date = $1\n AND user_.areaId = $2\n AND availability.startTimestamp <= $3\n AND availability.endTimestamp >= $4;\n",
"query": "SELECT\n availability.id,\n availability.userId,\n availability.startTimestamp,\n availability.endTimestamp,\n availability.comment,\n availability.crossAreal,\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.startTimestamp::date = $1\n AND user_.areaId = $2;\n",
"describe": {
"columns": [
{
@ -30,26 +30,31 @@
},
{
"ordinal": 5,
"name": "crossareal",
"type_info": "Bool"
},
{
"ordinal": 6,
"name": "name",
"type_info": "Text"
},
{
"ordinal": 6,
"ordinal": 7,
"name": "email",
"type_info": "Text"
},
{
"ordinal": 7,
"ordinal": 8,
"name": "password",
"type_info": "Text"
},
{
"ordinal": 8,
"ordinal": 9,
"name": "salt",
"type_info": "Text"
},
{
"ordinal": 9,
"ordinal": 10,
"name": "role: Role",
"type_info": {
"Custom": {
@ -65,7 +70,7 @@
}
},
{
"ordinal": 10,
"ordinal": 11,
"name": "function: UserFunction",
"type_info": {
"Custom": {
@ -88,22 +93,22 @@
}
},
{
"ordinal": 11,
"ordinal": 12,
"name": "areaid",
"type_info": "Int4"
},
{
"ordinal": 12,
"ordinal": 13,
"name": "locked",
"type_info": "Bool"
},
{
"ordinal": 13,
"ordinal": 14,
"name": "lastlogin",
"type_info": "Timestamptz"
},
{
"ordinal": 14,
"ordinal": 15,
"name": "receivenotifications",
"type_info": "Bool"
}
@ -111,9 +116,7 @@
"parameters": {
"Left": [
"Date",
"Int4",
"Timestamptz",
"Timestamptz"
"Int4"
]
},
"nullable": [
@ -124,6 +127,7 @@
true,
false,
false,
false,
true,
true,
false,
@ -134,5 +138,5 @@
false
]
},
"hash": "1881e09cead57f5bc1888b41d0a52afcf0f97afd335ddc70fe11cb5e7d9e978a"
"hash": "b4c12f4c03e4d6d2ddd5a9cff006389c20b6b09caaaacc1a93e52702e999f3ca"
}

View File

@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
"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.startTimestamp::date = $1\n AND user_.areaId = $2;\n",
"query": "SELECT\n availability.id,\n availability.userId,\n availability.startTimestamp,\n availability.endTimestamp,\n availability.comment,\n availability.crossAreal,\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": [
{
@ -30,26 +30,31 @@
},
{
"ordinal": 5,
"name": "crossareal",
"type_info": "Bool"
},
{
"ordinal": 6,
"name": "name",
"type_info": "Text"
},
{
"ordinal": 6,
"ordinal": 7,
"name": "email",
"type_info": "Text"
},
{
"ordinal": 7,
"ordinal": 8,
"name": "password",
"type_info": "Text"
},
{
"ordinal": 8,
"ordinal": 9,
"name": "salt",
"type_info": "Text"
},
{
"ordinal": 9,
"ordinal": 10,
"name": "role: Role",
"type_info": {
"Custom": {
@ -65,7 +70,7 @@
}
},
{
"ordinal": 10,
"ordinal": 11,
"name": "function: UserFunction",
"type_info": {
"Custom": {
@ -88,29 +93,28 @@
}
},
{
"ordinal": 11,
"ordinal": 12,
"name": "areaid",
"type_info": "Int4"
},
{
"ordinal": 12,
"ordinal": 13,
"name": "locked",
"type_info": "Bool"
},
{
"ordinal": 13,
"ordinal": 14,
"name": "lastlogin",
"type_info": "Timestamptz"
},
{
"ordinal": 14,
"ordinal": 15,
"name": "receivenotifications",
"type_info": "Bool"
}
],
"parameters": {
"Left": [
"Date",
"Int4"
]
},
@ -122,6 +126,7 @@
true,
false,
false,
false,
true,
true,
false,
@ -132,5 +137,5 @@
false
]
},
"hash": "14fbf5259ce8c783177fbdc7304ce12bd9b31ef0e805427e5e48142ab2189a9f"
"hash": "f8c9036b3eba00150f26a7b1e8b2d654f64c78f00ded76789a7dc04df5525925"
}

View File

@ -0,0 +1,2 @@
ALTER TABLE availability
ADD COLUMN crossAreal BOOLEAN NOT NULL DEFAULT false;

View File

@ -4,6 +4,7 @@ SELECT
availability.startTimestamp,
availability.endTimestamp,
availability.comment,
availability.crossAreal,
user_.name,
user_.email,
user_.password,

View File

@ -4,6 +4,7 @@ SELECT
availability.startTimestamp,
availability.endTimestamp,
availability.comment,
availability.crossAreal,
user_.name,
user_.email,
user_.password,

View File

@ -4,6 +4,7 @@ SELECT
availability.startTimestamp,
availability.endTimestamp,
availability.comment,
availability.crossAreal,
user_.name,
user_.email,
user_.password,

View File

@ -3,7 +3,8 @@ SELECT
availability.userId,
availability.startTimestamp,
availability.endTimestamp,
availability.comment
availability.comment,
availability.crossAreal
FROM availability
WHERE
availability.userId = $1

View File

@ -3,7 +3,8 @@ SELECT
availability.userId,
availability.startTimestamp,
availability.endTimestamp,
availability.comment
availability.comment,
availability.crossAreal
FROM availability
WHERE
availability.userId = $1

View File

@ -4,6 +4,7 @@ SELECT
availability.startTimestamp,
availability.endTimestamp,
availability.comment,
availability.crossAreal,
user_.name,
user_.email,
user_.password,

View File

@ -11,6 +11,7 @@ pub struct Availability {
pub start: NaiveDateTime,
pub end: NaiveDateTime,
pub comment: Option<String>,
pub cross_areal: bool,
}
impl Availability {
@ -67,6 +68,7 @@ impl Availability {
start: r.starttimestamp.naive_utc(),
end: r.endtimestamp.naive_utc(),
comment: r.comment.clone(),
cross_areal: r.crossareal,
})
.collect();
@ -111,6 +113,7 @@ impl Availability {
start: r.starttimestamp.naive_utc(),
end: r.endtimestamp.naive_utc(),
comment: r.comment.clone(),
cross_areal: r.crossareal,
})
.collect();
@ -142,6 +145,7 @@ impl Availability {
start: r.starttimestamp.naive_utc(),
end: r.endtimestamp.naive_utc(),
comment: r.comment.clone(),
cross_areal: r.crossareal,
});
Ok(availability)
@ -159,6 +163,7 @@ impl Availability {
start: record.starttimestamp.naive_utc(),
end: record.endtimestamp.naive_utc(),
comment: record.comment.clone(),
cross_areal: record.crossareal,
});
Ok(availability)
@ -203,6 +208,7 @@ impl Availability {
start: r.starttimestamp.naive_utc(),
end: r.endtimestamp.naive_utc(),
comment: r.comment.clone(),
cross_areal: r.crossareal,
})
.collect();
@ -231,6 +237,7 @@ impl Availability {
start: r.starttimestamp.naive_utc(),
end: r.endtimestamp.naive_utc(),
comment: r.comment.clone(),
cross_areal: r.crossareal,
})
.collect();
@ -260,6 +267,7 @@ impl Availability {
start: r.starttimestamp.naive_utc(),
end: r.endtimestamp.naive_utc(),
comment: r.comment.clone(),
cross_areal: r.crossareal,
})
.collect();
@ -280,7 +288,8 @@ impl Availability {
availability.userId,
availability.startTimestamp,
availability.endTimestamp,
availability.comment
availability.comment,
availability.crossAreal
FROM availability
WHERE availability.userId = $1
AND (availability.endtimestamp = $2
@ -302,6 +311,7 @@ impl Availability {
start: r.starttimestamp.naive_utc(),
end: r.endtimestamp.naive_utc(),
comment: r.comment.clone(),
cross_areal: r.crossareal,
});
Ok(adjacent_avaialability)