Updated read route to return a projectCardDto more accurately sending to the frontend the location and the project details that need to be shown on a card
This commit is contained in:
parent
5b86984645
commit
3558d6d184
|
@ -543,7 +543,7 @@ dependencies = [
|
|||
"proc-macro2",
|
||||
"quote",
|
||||
"scratch",
|
||||
"syn 2.0.2",
|
||||
"syn 2.0.8",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -560,7 +560,7 @@ checksum = "631569015d0d8d54e6c241733f944042623ab6df7bc3be7466874b05fcdb1c5f"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.2",
|
||||
"syn 2.0.8",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -615,31 +615,20 @@ checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f"
|
|||
|
||||
[[package]]
|
||||
name = "dotenvy"
|
||||
version = "0.15.6"
|
||||
version = "0.15.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "03d8c417d7a8cb362e0c37e5d815f5eb7c37f79ff93707329d5a194e42e54ca0"
|
||||
|
||||
[[package]]
|
||||
name = "dotenvy_codegen_impl"
|
||||
version = "0.15.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e05611d49f33180c6989e426b1d63a5ac0651307f0459321b67b38cd9861d050"
|
||||
dependencies = [
|
||||
"dotenvy",
|
||||
"proc-macro-hack",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 1.0.109",
|
||||
]
|
||||
checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b"
|
||||
|
||||
[[package]]
|
||||
name = "dotenvy_macro"
|
||||
version = "0.15.1"
|
||||
version = "0.15.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f559fff643c8f40279ab9bc50dd3734c22efc1f386972995f52892fe414722a7"
|
||||
checksum = "cb0235d912a8c749f4e0c9f18ca253b4c28cfefc1d2518096016d6e3230b6424"
|
||||
dependencies = [
|
||||
"dotenvy_codegen_impl",
|
||||
"proc-macro-hack",
|
||||
"dotenvy",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 1.0.109",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -942,16 +931,16 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "iana-time-zone"
|
||||
version = "0.1.53"
|
||||
version = "0.1.54"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765"
|
||||
checksum = "0c17cc76786e99f8d2f055c11159e7f0091c42474dcc3189fbab96072e873e6d"
|
||||
dependencies = [
|
||||
"android_system_properties",
|
||||
"core-foundation-sys",
|
||||
"iana-time-zone-haiku",
|
||||
"js-sys",
|
||||
"wasm-bindgen",
|
||||
"winapi",
|
||||
"windows",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1144,9 +1133,9 @@ checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
|
|||
|
||||
[[package]]
|
||||
name = "mime"
|
||||
version = "0.3.16"
|
||||
version = "0.3.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d"
|
||||
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
|
||||
|
||||
[[package]]
|
||||
name = "minimal-lexical"
|
||||
|
@ -1351,17 +1340,11 @@ version = "0.2.17"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro-hack"
|
||||
version = "0.5.20+deprecated"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068"
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.52"
|
||||
version = "1.0.53"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1d0e1ae9e836cc3beddd63db0df682593d7e2d3d891ae8c9083d2113e1744224"
|
||||
checksum = "ba466839c78239c09faf015484e5cc04860f88242cff4d03eb038f04b4699b73"
|
||||
dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
|
@ -1427,9 +1410,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "regex"
|
||||
version = "1.7.1"
|
||||
version = "1.7.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733"
|
||||
checksum = "cce168fea28d3e05f158bda4576cf0c844d5045bc2cc3620fa0292ed5bb5814c"
|
||||
dependencies = [
|
||||
"aho-corasick",
|
||||
"memchr",
|
||||
|
@ -1438,15 +1421,15 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "regex-syntax"
|
||||
version = "0.6.28"
|
||||
version = "0.6.29"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848"
|
||||
checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
|
||||
|
||||
[[package]]
|
||||
name = "reqwest"
|
||||
version = "0.11.14"
|
||||
version = "0.11.15"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "21eed90ec8570952d53b772ecf8f206aa1ec9a3d76b2521c56c42973f2d91ee9"
|
||||
checksum = "0ba30cc2c0cd02af1222ed216ba659cdb2f879dfe3181852fe7c50b1d0005949"
|
||||
dependencies = [
|
||||
"base64 0.21.0",
|
||||
"bytes",
|
||||
|
@ -1562,22 +1545,22 @@ checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed"
|
|||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.157"
|
||||
version = "1.0.158"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "707de5fcf5df2b5788fca98dd7eab490bc2fd9b7ef1404defc462833b83f25ca"
|
||||
checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9"
|
||||
dependencies = [
|
||||
"serde_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_derive"
|
||||
version = "1.0.157"
|
||||
version = "1.0.158"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "78997f4555c22a7971214540c4a661291970619afd56de19f77e0de86296e1e5"
|
||||
checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.2",
|
||||
"syn 2.0.8",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1684,9 +1667,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "sqlx"
|
||||
version = "0.6.2"
|
||||
version = "0.6.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9249290c05928352f71c077cc44a464d880c63f26f7534728cca008e135c0428"
|
||||
checksum = "f8de3b03a925878ed54a954f621e64bf55a3c1bd29652d0d1a17830405350188"
|
||||
dependencies = [
|
||||
"sqlx-core",
|
||||
"sqlx-macros",
|
||||
|
@ -1694,9 +1677,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "sqlx-core"
|
||||
version = "0.6.2"
|
||||
version = "0.6.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dcbc16ddba161afc99e14d1713a453747a2b07fc097d2009f4c300ec99286105"
|
||||
checksum = "fa8241483a83a3f33aa5fff7e7d9def398ff9990b2752b6c6112b83c6d246029"
|
||||
dependencies = [
|
||||
"ahash 0.7.6",
|
||||
"atoi",
|
||||
|
@ -1749,9 +1732,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "sqlx-macros"
|
||||
version = "0.6.2"
|
||||
version = "0.6.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b850fa514dc11f2ee85be9d055c512aa866746adfacd1cb42d867d68e6a5b0d9"
|
||||
checksum = "9966e64ae989e7e575b19d7265cb79d7fc3cbbdf179835cb0d716f294c2049c9"
|
||||
dependencies = [
|
||||
"dotenvy",
|
||||
"either",
|
||||
|
@ -1771,9 +1754,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "sqlx-rt"
|
||||
version = "0.6.2"
|
||||
version = "0.6.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "24c5b2d25fa654cc5f841750b8e1cdedbe21189bf9a9382ee90bfa9dd3562396"
|
||||
checksum = "804d3f245f894e61b1e6263c84b23ca675d96753b5abfd5cc8597d86806e8024"
|
||||
dependencies = [
|
||||
"once_cell",
|
||||
"tokio",
|
||||
|
@ -1809,9 +1792,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.2"
|
||||
version = "2.0.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "59d3276aee1fa0c33612917969b5172b5be2db051232a6e4826f1a1a9191b045"
|
||||
checksum = "bcc02725fd69ab9f26eab07fad303e2497fad6fb9eba4f96c4d1687bdf704ad9"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
@ -1844,7 +1827,7 @@ checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.2",
|
||||
"syn 2.0.8",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2008,9 +1991,9 @@ checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba"
|
|||
|
||||
[[package]]
|
||||
name = "unicode-bidi"
|
||||
version = "0.3.12"
|
||||
version = "0.3.13"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7d502c968c6a838ead8e69b2ee18ec708802f99db92a0d156705ec9ef801993b"
|
||||
checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
|
||||
|
||||
[[package]]
|
||||
name = "unicode-ident"
|
||||
|
@ -2249,6 +2232,15 @@ version = "0.4.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
||||
|
||||
[[package]]
|
||||
name = "windows"
|
||||
version = "0.46.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cdacb41e6a96a052c6cb63a144f24900236121c6f63f4f8219fef5977ecb0c25"
|
||||
dependencies = [
|
||||
"windows-targets",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-sys"
|
||||
version = "0.45.0"
|
||||
|
|
|
@ -3,16 +3,10 @@ SELECT
|
|||
p.project_state as "project_state: _",
|
||||
p.project_type as "project_type: _",
|
||||
p.project_condition as "project_condition: _",
|
||||
p.agent_id,
|
||||
p.location_id,
|
||||
p.title,
|
||||
p.description,
|
||||
p.admin_tag,
|
||||
l.city,
|
||||
l.district,
|
||||
p.finish_date,
|
||||
p.floors,
|
||||
p.media as "media: _",
|
||||
p.time_created,
|
||||
p.last_updated
|
||||
p.media as "media: _"
|
||||
FROM project p, location l
|
||||
WHERE p.location_id = l.id
|
||||
-- Filters here:
|
||||
|
|
170
sqlx-data.json
170
sqlx-data.json
|
@ -166,109 +166,6 @@
|
|||
},
|
||||
"query": "DELETE FROM location where id = $1;"
|
||||
},
|
||||
"444248a6ee54ce3f8345077330be191e04cc9bdf31feba0e661efab1acf21716": {
|
||||
"describe": {
|
||||
"columns": [
|
||||
{
|
||||
"name": "id",
|
||||
"ordinal": 0,
|
||||
"type_info": "Uuid"
|
||||
},
|
||||
{
|
||||
"name": "project_state: _",
|
||||
"ordinal": 1,
|
||||
"type_info": "Varchar"
|
||||
},
|
||||
{
|
||||
"name": "project_type: _",
|
||||
"ordinal": 2,
|
||||
"type_info": "Varchar"
|
||||
},
|
||||
{
|
||||
"name": "project_condition: _",
|
||||
"ordinal": 3,
|
||||
"type_info": "Varchar"
|
||||
},
|
||||
{
|
||||
"name": "agent_id",
|
||||
"ordinal": 4,
|
||||
"type_info": "Uuid"
|
||||
},
|
||||
{
|
||||
"name": "location_id",
|
||||
"ordinal": 5,
|
||||
"type_info": "Uuid"
|
||||
},
|
||||
{
|
||||
"name": "title",
|
||||
"ordinal": 6,
|
||||
"type_info": "Varchar"
|
||||
},
|
||||
{
|
||||
"name": "description",
|
||||
"ordinal": 7,
|
||||
"type_info": "Text"
|
||||
},
|
||||
{
|
||||
"name": "admin_tag",
|
||||
"ordinal": 8,
|
||||
"type_info": "Varchar"
|
||||
},
|
||||
{
|
||||
"name": "finish_date",
|
||||
"ordinal": 9,
|
||||
"type_info": "Timestamp"
|
||||
},
|
||||
{
|
||||
"name": "floors",
|
||||
"ordinal": 10,
|
||||
"type_info": "Int2"
|
||||
},
|
||||
{
|
||||
"name": "media: _",
|
||||
"ordinal": 11,
|
||||
"type_info": "Text"
|
||||
},
|
||||
{
|
||||
"name": "time_created",
|
||||
"ordinal": 12,
|
||||
"type_info": "Timestamptz"
|
||||
},
|
||||
{
|
||||
"name": "last_updated",
|
||||
"ordinal": 13,
|
||||
"type_info": "Timestamptz"
|
||||
}
|
||||
],
|
||||
"nullable": [
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
],
|
||||
"parameters": {
|
||||
"Left": [
|
||||
"Text",
|
||||
"Text",
|
||||
"Text",
|
||||
"Text",
|
||||
"Text",
|
||||
"Int8"
|
||||
]
|
||||
}
|
||||
},
|
||||
"query": "SELECT \n p.id,\n p.project_state as \"project_state: _\",\n p.project_type as \"project_type: _\",\n p.project_condition as \"project_condition: _\",\n p.agent_id,\n p.location_id,\n p.title,\n p.description,\n p.admin_tag,\n p.finish_date,\n p.floors,\n p.media as \"media: _\",\n p.time_created,\n p.last_updated\nFROM project p, location l\nWHERE p.location_id = l.id\n-- Filters here:\nAND (LOWER(l.city) LIKE '%' || LOWER($1) || '%' OR $1 IS null) -- City Filter\nAND (LOWER(l.district) LIKE '%' || LOWER($2) || '%' OR $2 IS null) -- District Filter\nAND (p.project_type = $3 OR $3 IS null) -- ProjectType\nAND (p.project_condition = $4 OR $4 IS null) -- ProjectCondition\nAND (p.project_state = $5 OR $5 IS null) -- ProjectState\n-- End of filters\nORDER BY p.time_created DESC\nLIMIT 50 OFFSET $6;"
|
||||
},
|
||||
"4ef2f2177dd00503913e281cf97bd922bcdc4b30ed834505eb8ea9a396f73331": {
|
||||
"describe": {
|
||||
"columns": [],
|
||||
|
@ -293,6 +190,73 @@
|
|||
},
|
||||
"query": "DELETE FROM unit WHERE id = $1;"
|
||||
},
|
||||
"7d674df64d815d97c15a4bb2b84fb4ab7f4289904d6fb8cf9537a1ec848d926c": {
|
||||
"describe": {
|
||||
"columns": [
|
||||
{
|
||||
"name": "id",
|
||||
"ordinal": 0,
|
||||
"type_info": "Uuid"
|
||||
},
|
||||
{
|
||||
"name": "project_state: _",
|
||||
"ordinal": 1,
|
||||
"type_info": "Varchar"
|
||||
},
|
||||
{
|
||||
"name": "project_type: _",
|
||||
"ordinal": 2,
|
||||
"type_info": "Varchar"
|
||||
},
|
||||
{
|
||||
"name": "project_condition: _",
|
||||
"ordinal": 3,
|
||||
"type_info": "Varchar"
|
||||
},
|
||||
{
|
||||
"name": "city",
|
||||
"ordinal": 4,
|
||||
"type_info": "Varchar"
|
||||
},
|
||||
{
|
||||
"name": "district",
|
||||
"ordinal": 5,
|
||||
"type_info": "Varchar"
|
||||
},
|
||||
{
|
||||
"name": "finish_date",
|
||||
"ordinal": 6,
|
||||
"type_info": "Timestamp"
|
||||
},
|
||||
{
|
||||
"name": "media: _",
|
||||
"ordinal": 7,
|
||||
"type_info": "Text"
|
||||
}
|
||||
],
|
||||
"nullable": [
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
],
|
||||
"parameters": {
|
||||
"Left": [
|
||||
"Text",
|
||||
"Text",
|
||||
"Text",
|
||||
"Text",
|
||||
"Text",
|
||||
"Int8"
|
||||
]
|
||||
}
|
||||
},
|
||||
"query": "SELECT \n p.id,\n p.project_state as \"project_state: _\",\n p.project_type as \"project_type: _\",\n p.project_condition as \"project_condition: _\",\n l.city,\n l.district,\n p.finish_date,\n p.media as \"media: _\"\nFROM project p, location l\nWHERE p.location_id = l.id\n-- Filters here:\nAND (LOWER(l.city) LIKE '%' || LOWER($1) || '%' OR $1 IS null) -- City Filter\nAND (LOWER(l.district) LIKE '%' || LOWER($2) || '%' OR $2 IS null) -- District Filter\nAND (p.project_type = $3 OR $3 IS null) -- ProjectType\nAND (p.project_condition = $4 OR $4 IS null) -- ProjectCondition\nAND (p.project_state = $5 OR $5 IS null) -- ProjectState\n-- End of filters\nORDER BY p.time_created DESC\nLIMIT 50 OFFSET $6;"
|
||||
},
|
||||
"825e1ac484241349c54e75bb77186ce41ea98fd17cabd7308e737a6c9c5812a9": {
|
||||
"describe": {
|
||||
"columns": [
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use jl_types::{
|
||||
domain::{project::Project, project_state::ProjectState},
|
||||
dto::filters::Filter,
|
||||
dto::{filters::Filter, project_card::ProjectCardDto},
|
||||
};
|
||||
use sqlx::{postgres::PgQueryResult, PgPool, Postgres, Transaction};
|
||||
use uuid::Uuid;
|
||||
|
@ -83,7 +83,7 @@ pub async fn fetch_with_filters_paged(
|
|||
conn: &PgPool,
|
||||
filters: &Vec<Filter>,
|
||||
page: &i64,
|
||||
) -> Result<Vec<Project>, sqlx::Error> {
|
||||
) -> Result<Vec<ProjectCardDto>, sqlx::Error> {
|
||||
let offset = (page - 1) * 50;
|
||||
let mut city_filter = None;
|
||||
let mut district_filter = None;
|
||||
|
@ -95,7 +95,7 @@ pub async fn fetch_with_filters_paged(
|
|||
match filter {
|
||||
Filter::InCity(city) => city_filter = Some(city),
|
||||
Filter::InDistrict(district) => district_filter = Some(district),
|
||||
Filter::Finished => project_state_filter = ProjectState::InConstruction,
|
||||
Filter::Finished => project_state_filter = ProjectState::Finished,
|
||||
Filter::ByProjectType(project_type) => project_type_filter = Some(project_type),
|
||||
Filter::ByProjectCondition(project_condition) => {
|
||||
project_condition_filter = Some(project_condition)
|
||||
|
@ -104,7 +104,7 @@ pub async fn fetch_with_filters_paged(
|
|||
}
|
||||
|
||||
sqlx::query_file_as!(
|
||||
Project,
|
||||
ProjectCardDto,
|
||||
"sql/project/fetch_with_filters_paged.sql",
|
||||
city_filter,
|
||||
district_filter,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
use std::{collections::HashMap, str::FromStr, sync::Arc};
|
||||
use std::{collections::{HashMap, HashSet}, str::FromStr, sync::Arc};
|
||||
|
||||
use actix_web::{
|
||||
get,
|
||||
|
@ -8,10 +8,10 @@ use actix_web_utils::extensions::typed_response::TypedHttpResponse;
|
|||
use err::MessageResource;
|
||||
use jl_types::{
|
||||
domain::{
|
||||
agent::Agent, location::Location, project::Project, project_condition::ProjectCondition,
|
||||
agent::Agent, project_condition::ProjectCondition,
|
||||
project_type::ProjectType,
|
||||
},
|
||||
dto::{filters::Filter, listing::Listing},
|
||||
dto::{filters::Filter, listing::Listing, project_card::ProjectCardDto},
|
||||
};
|
||||
use sqlx::PgPool;
|
||||
use uuid::Uuid;
|
||||
|
@ -26,7 +26,7 @@ pub async fn get_all_agents(db_conn: web::Data<Arc<PgPool>>) -> TypedHttpRespons
|
|||
#[get("/locations")]
|
||||
pub async fn get_all_locations(
|
||||
db_conn: web::Data<Arc<PgPool>>,
|
||||
) -> TypedHttpResponse<Vec<Location>> {
|
||||
) -> TypedHttpResponse<HashSet<String>> {
|
||||
services::read::get_all_locations(&db_conn).await
|
||||
}
|
||||
|
||||
|
@ -34,7 +34,7 @@ pub async fn get_all_locations(
|
|||
pub async fn get_locations_in_city(
|
||||
db_conn: web::Data<Arc<PgPool>>,
|
||||
city: Path<String>,
|
||||
) -> TypedHttpResponse<Vec<Location>> {
|
||||
) -> TypedHttpResponse<HashSet<String>> {
|
||||
services::read::get_all_locations_in_city(&db_conn, &city).await
|
||||
}
|
||||
|
||||
|
@ -43,7 +43,7 @@ pub async fn get_projects_paged(
|
|||
db_conn: web::Data<Arc<PgPool>>,
|
||||
page: Path<i64>,
|
||||
query_params: web::Query<HashMap<String, String>>,
|
||||
) -> TypedHttpResponse<Vec<Project>> {
|
||||
) -> TypedHttpResponse<Vec<ProjectCardDto>> {
|
||||
let filters = match parse_params_into_filters(query_params.0) {
|
||||
Ok(filters) => filters,
|
||||
Err(msg) => return TypedHttpResponse::return_standard_error(400, msg),
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
use std::collections::HashSet;
|
||||
|
||||
use actix_web_utils::extensions::typed_response::TypedHttpResponse;
|
||||
use jl_types::{
|
||||
domain::{agent::Agent, location::Location, project::Project},
|
||||
dto::{filters::Filter, listing::Listing},
|
||||
domain::{agent::Agent},
|
||||
dto::{filters::Filter, listing::Listing, project_card::ProjectCardDto},
|
||||
};
|
||||
use sqlx::PgPool;
|
||||
use uuid::Uuid;
|
||||
|
@ -12,24 +14,27 @@ pub async fn get_all_agents(conn: &PgPool) -> TypedHttpResponse<Vec<Agent>> {
|
|||
success!(handle_db_read_op!(dao::agent::fetch_all(conn)))
|
||||
}
|
||||
|
||||
pub async fn get_all_locations(conn: &PgPool) -> TypedHttpResponse<Vec<Location>> {
|
||||
success!(handle_db_read_op!(dao::location::fetch_all_locations(conn)))
|
||||
pub async fn get_all_locations(conn: &PgPool) -> TypedHttpResponse<HashSet<String>> {
|
||||
let locations: HashSet<String> = handle_db_read_op!(dao::location::fetch_all_locations(conn)).into_iter().map(|location| location.city).collect();
|
||||
|
||||
|
||||
success!(locations)
|
||||
}
|
||||
|
||||
pub async fn get_all_locations_in_city(
|
||||
conn: &PgPool,
|
||||
city: &String,
|
||||
) -> TypedHttpResponse<Vec<Location>> {
|
||||
) -> TypedHttpResponse<HashSet<String>> {
|
||||
success!(handle_db_read_op!(dao::location::get_locations_in_city(
|
||||
conn, city
|
||||
)))
|
||||
)).into_iter().map(|location| location.district).collect())
|
||||
}
|
||||
|
||||
pub async fn get_projects_paged(
|
||||
conn: &PgPool,
|
||||
page: &i64,
|
||||
filters: &Vec<Filter>,
|
||||
) -> TypedHttpResponse<Vec<Project>> {
|
||||
) -> TypedHttpResponse<Vec<ProjectCardDto>> {
|
||||
success!(handle_db_read_op!(dao::project::fetch_with_filters_paged(
|
||||
conn, filters, page
|
||||
)))
|
||||
|
|
Loading…
Reference in New Issue