URL handling in backend
This commit is contained in:
parent
f7afdf6785
commit
e728b0b56a
3 changed files with 11 additions and 7 deletions
2
Cargo.lock
generated
2
Cargo.lock
generated
|
|
@ -654,7 +654,7 @@ checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "huellas"
|
name = "huellas"
|
||||||
version = "0.1.3"
|
version = "0.1.4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"rocket",
|
"rocket",
|
||||||
"rocket_db_pools",
|
"rocket_db_pools",
|
||||||
|
|
|
||||||
|
|
@ -11,4 +11,5 @@ pub struct Place {
|
||||||
pub description: String,
|
pub description: String,
|
||||||
pub longitude: f64,
|
pub longitude: f64,
|
||||||
pub latitude: f64,
|
pub latitude: f64,
|
||||||
|
pub url: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ struct Db(rocket_db_pools::sqlx::SqlitePool);
|
||||||
#[get("/places")]
|
#[get("/places")]
|
||||||
async fn get_places(mut db: Connection<Db>) -> Result<Json<Vec<Place>>> {
|
async fn get_places(mut db: Connection<Db>) -> Result<Json<Vec<Place>>> {
|
||||||
let places = rocket_db_pools::sqlx::query!(
|
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"#
|
r#"longitude as "longitude: f64", latitude as "latitude: f64" FROM places WHERE active = TRUE"#
|
||||||
)
|
)
|
||||||
.fetch(&mut *db)
|
.fetch(&mut *db)
|
||||||
|
|
@ -29,6 +29,7 @@ async fn get_places(mut db: Connection<Db>) -> Result<Json<Vec<Place>>> {
|
||||||
description: p.description,
|
description: p.description,
|
||||||
latitude: p.latitude,
|
latitude: p.latitude,
|
||||||
longitude: p.longitude,
|
longitude: p.longitude,
|
||||||
|
url: p.url,
|
||||||
})
|
})
|
||||||
.try_collect::<Vec<_>>()
|
.try_collect::<Vec<_>>()
|
||||||
.await?;
|
.await?;
|
||||||
|
|
@ -59,8 +60,8 @@ struct Id {
|
||||||
async fn insert_place(mut db: Connection<Db>, mut place: Json<Place>) -> Result<UpsertResponse> {
|
async fn insert_place(mut db: Connection<Db>, mut place: Json<Place>) -> Result<UpsertResponse> {
|
||||||
let i = ::sqlx::query_as!(
|
let i = ::sqlx::query_as!(
|
||||||
Id,
|
Id,
|
||||||
"INSERT INTO places (name, address, open_hours, icon, description, longitude, latitude)\
|
"INSERT INTO places (name, address, open_hours, icon, description, longitude, latitude, url)\
|
||||||
VALUES (?, ?, ?, ?, ?, ?, ?)\
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?)\
|
||||||
RETURNING id",
|
RETURNING id",
|
||||||
place.name,
|
place.name,
|
||||||
place.address,
|
place.address,
|
||||||
|
|
@ -68,7 +69,8 @@ async fn insert_place(mut db: Connection<Db>, mut place: Json<Place>) -> Result<
|
||||||
place.icon,
|
place.icon,
|
||||||
place.description,
|
place.description,
|
||||||
place.longitude,
|
place.longitude,
|
||||||
place.latitude
|
place.latitude,
|
||||||
|
place.url
|
||||||
)
|
)
|
||||||
.fetch_one(&mut *db)
|
.fetch_one(&mut *db)
|
||||||
.await?;
|
.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> {
|
async fn update_place(mut db: Connection<Db>, place: Json<Place>) -> Result<UpsertResponse> {
|
||||||
let result = ::sqlx::query!(
|
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.name,
|
||||||
place.address,
|
place.address,
|
||||||
place.open_hours,
|
place.open_hours,
|
||||||
|
|
@ -88,6 +90,7 @@ async fn update_place(mut db: Connection<Db>, place: Json<Place>) -> Result<Upse
|
||||||
place.longitude,
|
place.longitude,
|
||||||
place.latitude,
|
place.latitude,
|
||||||
place.id,
|
place.id,
|
||||||
|
place.url,
|
||||||
)
|
)
|
||||||
.execute(&mut *db)
|
.execute(&mut *db)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
@ -105,7 +108,7 @@ async fn delete_place(mut db: Connection<Db>, id: i64) -> Result<Option<()>> {
|
||||||
.execute(&mut *db)
|
.execute(&mut *db)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
Ok((result.rows_affected() == 1).then(|| ()))
|
Ok((result.rows_affected() == 1).then_some(()))
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn run_migrations(rocket: Rocket<Build>) -> fairing::Result {
|
async fn run_migrations(rocket: Rocket<Build>) -> fairing::Result {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue