URL handling in backend

This commit is contained in:
Felipe 2023-03-27 22:11:29 -03:00
parent f7afdf6785
commit e728b0b56a
Signed by: pitbuster
SSH key fingerprint: SHA256:HDYu2Pm4/TmSX8GBwV49UvFWr1Ljg8XlHxKeCpjJpOk
3 changed files with 11 additions and 7 deletions

2
Cargo.lock generated
View file

@ -654,7 +654,7 @@ checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421"
[[package]]
name = "huellas"
version = "0.1.3"
version = "0.1.4"
dependencies = [
"rocket",
"rocket_db_pools",

View file

@ -11,4 +11,5 @@ pub struct Place {
pub description: String,
pub longitude: f64,
pub latitude: f64,
pub url: Option<String>,
}

View file

@ -16,7 +16,7 @@ struct Db(rocket_db_pools::sqlx::SqlitePool);
#[get("/places")]
async fn get_places(mut db: Connection<Db>) -> Result<Json<Vec<Place>>> {
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<Db>) -> Result<Json<Vec<Place>>> {
description: p.description,
latitude: p.latitude,
longitude: p.longitude,
url: p.url,
})
.try_collect::<Vec<_>>()
.await?;
@ -59,8 +60,8 @@ struct Id {
async fn insert_place(mut db: Connection<Db>, mut place: Json<Place>) -> Result<UpsertResponse> {
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<Db>, mut place: Json<Place>) -> 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<Db>, mut place: Json<Place>) -> Result<
async fn update_place(mut db: Connection<Db>, place: Json<Place>) -> Result<UpsertResponse> {
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,
@ -88,6 +90,7 @@ async fn update_place(mut db: Connection<Db>, place: Json<Place>) -> Result<Upse
place.longitude,
place.latitude,
place.id,
place.url,
)
.execute(&mut *db)
.await?;
@ -105,7 +108,7 @@ async fn delete_place(mut db: Connection<Db>, id: i64) -> Result<Option<()>> {
.execute(&mut *db)
.await?;
Ok((result.rows_affected() == 1).then(|| ()))
Ok((result.rows_affected() == 1).then_some(()))
}
async fn run_migrations(rocket: Rocket<Build>) -> fairing::Result {