From 2279026a8122cf08a96a230e61c44344090a50fa Mon Sep 17 00:00:00 2001 From: Felipe Date: Tue, 28 Mar 2023 02:01:09 -0300 Subject: [PATCH] Add optional URL field (#14) Co-authored-by: Felipe Contreras Salinas Reviewed-on: https://oolong.ludwig.dog/pitbuster/huellas/pulls/14 --- Cargo.lock | 2 +- migrations/20230315004723_add_url.sql | 1 + src/place.rs | 1 + src/routes.rs | 15 ++++++----- static/index.html | 4 +++ ts-client/client.ts | 36 +++++++++++++++++++++------ 6 files changed, 44 insertions(+), 15 deletions(-) create mode 100644 migrations/20230315004723_add_url.sql diff --git a/Cargo.lock b/Cargo.lock index eec7613..e2c68f8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -654,7 +654,7 @@ checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" [[package]] name = "huellas" -version = "0.1.3" +version = "0.1.4" dependencies = [ "rocket", "rocket_db_pools", diff --git a/migrations/20230315004723_add_url.sql b/migrations/20230315004723_add_url.sql new file mode 100644 index 0000000..bd3762a --- /dev/null +++ b/migrations/20230315004723_add_url.sql @@ -0,0 +1 @@ +ALTER TABLE places ADD url VARCHAR DEFAULT null; diff --git a/src/place.rs b/src/place.rs index 282176e..fdac142 100644 --- a/src/place.rs +++ b/src/place.rs @@ -11,4 +11,5 @@ pub struct Place { pub description: String, pub longitude: f64, pub latitude: f64, + pub url: Option, } diff --git a/src/routes.rs b/src/routes.rs index 679540d..91f1219 100644 --- a/src/routes.rs +++ b/src/routes.rs @@ -16,7 +16,7 @@ struct Db(rocket_db_pools::sqlx::SqlitePool); #[get("/places")] async fn get_places(mut db: Connection) -> Result>> { let places = rocket_db_pools::sqlx::query!( - "SELECT id, name, address, open_hours, icon, description," + + "SELECT id, name, address, open_hours, icon, description, url," + r#"longitude as "longitude: f64", latitude as "latitude: f64" FROM places WHERE active = TRUE"# ) .fetch(&mut *db) @@ -29,6 +29,7 @@ async fn get_places(mut db: Connection) -> Result>> { description: p.description, latitude: p.latitude, longitude: p.longitude, + url: p.url, }) .try_collect::>() .await?; @@ -59,8 +60,8 @@ struct Id { async fn insert_place(mut db: Connection, mut place: Json) -> Result { let i = ::sqlx::query_as!( Id, - "INSERT INTO places (name, address, open_hours, icon, description, longitude, latitude)\ - VALUES (?, ?, ?, ?, ?, ?, ?)\ + "INSERT INTO places (name, address, open_hours, icon, description, longitude, latitude, url)\ + VALUES (?, ?, ?, ?, ?, ?, ?, ?)\ RETURNING id", place.name, place.address, @@ -68,7 +69,8 @@ async fn insert_place(mut db: Connection, mut place: Json) -> Result< place.icon, place.description, place.longitude, - place.latitude + place.latitude, + place.url ) .fetch_one(&mut *db) .await?; @@ -79,7 +81,7 @@ async fn insert_place(mut db: Connection, mut place: Json) -> Result< async fn update_place(mut db: Connection, place: Json) -> Result { let result = ::sqlx::query!( - "UPDATE places SET (name, address, open_hours, icon, description, longitude, latitude) = (?, ?, ?, ?, ?, ?, ?) WHERE id = ?", + "UPDATE places SET (name, address, open_hours, icon, description, longitude, latitude, url) = (?, ?, ?, ?, ?, ?, ?, ?) WHERE id = ?", place.name, place.address, place.open_hours, @@ -87,6 +89,7 @@ async fn update_place(mut db: Connection, place: Json) -> Result, id: i64) -> Result> { .execute(&mut *db) .await?; - Ok((result.rows_affected() == 1).then(|| ())) + Ok((result.rows_affected() == 1).then_some(())) } async fn run_migrations(rocket: Rocket) -> fairing::Result { diff --git a/static/index.html b/static/index.html index 47fca0f..a2335c5 100644 --- a/static/index.html +++ b/static/index.html @@ -136,6 +136,10 @@

+

+ + +