From 2f238e8d1c4cec14f2376e1acd5c063904f7fc1f Mon Sep 17 00:00:00 2001 From: Felipe Contreras Date: Sat, 6 Aug 2022 22:21:45 -0400 Subject: [PATCH] Use double precision for coordinates --- .../20220717192031_create_places_table.sql | 6 +- sqlx-data.json | 64 +++++++++---------- src/place.rs | 4 +- src/routes.rs | 30 +++++---- 4 files changed, 53 insertions(+), 51 deletions(-) diff --git a/migrations/20220717192031_create_places_table.sql b/migrations/20220717192031_create_places_table.sql index 8b57fdb..7490135 100644 --- a/migrations/20220717192031_create_places_table.sql +++ b/migrations/20220717192031_create_places_table.sql @@ -1,11 +1,11 @@ CREATE TABLE places ( - id INTEGER PRIMARY KEY AUTOINCREMENT, + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, name VARCHAR NOT NULL, address VARCHAR NOT NULL, open_hours VARCHAR NOT NULL, icon VARCHAR NOT NULL, description VARCHAR NOT NULL, - longitude REAL NOT NULL, - latitude REAL NOT NULL, + longitude DOUBLE NOT NULL, + latitude DOUBLE NOT NULL, active BOOLEAN NOT NULL DEFAULT TRUE ); diff --git a/sqlx-data.json b/sqlx-data.json index f324d6d..044a224 100644 --- a/sqlx-data.json +++ b/sqlx-data.json @@ -10,7 +10,35 @@ }, "query": "UPDATE places SET (name, address, open_hours, icon, description, longitude, latitude) = (?, ?, ?, ?, ?, ?, ?)" }, - "8f8e9058b89c1f10360e08f8733c75e6ea2e8c15ff2c1e8a9f4a8ecd6e778642": { + "af66ec71413501f84c7f4cb0dd732c8ebfcd3da36a5f1177918c2277a8674c28": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Right": 1 + } + }, + "query": "UPDATE places SET active = FALSE WHERE id = ?" + }, + "e10f7e8f125a3f60338f6c35b195517d4304304599c75e4f26f071e2a09609dc": { + "describe": { + "columns": [ + { + "name": "id", + "ordinal": 0, + "type_info": "Int64" + } + ], + "nullable": [ + false + ], + "parameters": { + "Right": 7 + } + }, + "query": "INSERT INTO places (name, address, open_hours, icon, description, longitude, latitude)VALUES (?, ?, ?, ?, ?, ?, ?)RETURNING id" + }, + "fdc2eb1d98b93f2b61c756687f1a30edf2e4a74622e23b6b72a9509a9303385d": { "describe": { "columns": [ { @@ -44,12 +72,12 @@ "type_info": "Text" }, { - "name": "longitude", + "name": "longitude: f64", "ordinal": 6, "type_info": "Float" }, { - "name": "latitude", + "name": "latitude: f64", "ordinal": 7, "type_info": "Float" } @@ -68,34 +96,6 @@ "Right": 0 } }, - "query": "SELECT id, name, address, open_hours, icon, description, longitude, latitude FROM places WHERE active = TRUE" - }, - "af66ec71413501f84c7f4cb0dd732c8ebfcd3da36a5f1177918c2277a8674c28": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Right": 1 - } - }, - "query": "UPDATE places SET active = FALSE WHERE id = ?" - }, - "e10f7e8f125a3f60338f6c35b195517d4304304599c75e4f26f071e2a09609dc": { - "describe": { - "columns": [ - { - "name": "id", - "ordinal": 0, - "type_info": "Int64" - } - ], - "nullable": [ - false - ], - "parameters": { - "Right": 7 - } - }, - "query": "INSERT INTO places (name, address, open_hours, icon, description, longitude, latitude)VALUES (?, ?, ?, ?, ?, ?, ?)RETURNING id" + "query": "SELECT id, name, address, open_hours, icon, description,longitude as \"longitude: f64\", latitude as \"latitude: f64\" FROM places WHERE active = TRUE" } } \ No newline at end of file diff --git a/src/place.rs b/src/place.rs index a505613..282176e 100644 --- a/src/place.rs +++ b/src/place.rs @@ -9,6 +9,6 @@ pub struct Place { pub open_hours: String, pub icon: String, pub description: String, - pub longitude: f32, - pub latitude: f32, + pub longitude: f64, + pub latitude: f64, } diff --git a/src/routes.rs b/src/routes.rs index 95c8ea9..d278712 100644 --- a/src/routes.rs +++ b/src/routes.rs @@ -16,20 +16,22 @@ 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, longitude, latitude FROM places WHERE active = TRUE") - .fetch(&mut *db) - .map_ok(|p| Place { - id: Some(p.id), - name: p.name, - address: p.address, - open_hours: p.open_hours, - icon: p.icon, - description: p.description, - latitude: p.latitude, - longitude: p.longitude - }) - .try_collect::>() - .await?; + "SELECT id, name, address, open_hours, icon, description," + + r#"longitude as "longitude: f64", latitude as "latitude: f64" FROM places WHERE active = TRUE"# + ) + .fetch(&mut *db) + .map_ok(|p| Place { + id: Some(p.id), + name: p.name, + address: p.address, + open_hours: p.open_hours, + icon: p.icon, + description: p.description, + latitude: p.latitude, + longitude: p.longitude, + }) + .try_collect::>() + .await?; Ok(Json(places)) }