update
This commit is contained in:
@@ -104,7 +104,11 @@ async fn get_tile_ways(
|
||||
Path((z, x, y)): Path<(i32, i32, i32)>,
|
||||
State(state): State<Arc<AppState>>,
|
||||
) -> Result<Json<Vec<MapWay>>, (axum::http::StatusCode, String)> {
|
||||
let query = "SELECT id, tags, points FROM map_data.ways WHERE zoom = ? AND tile_x = ? AND tile_y = ?";
|
||||
let query = if z < 9 {
|
||||
"SELECT id, tags, points FROM map_data.ways WHERE zoom = ? AND tile_x = ? AND tile_y = ? LIMIT 10000"
|
||||
} else {
|
||||
"SELECT id, tags, points FROM map_data.ways WHERE zoom = ? AND tile_x = ? AND tile_y = ?"
|
||||
};
|
||||
let rows = state.scylla_session.query(query, (z, x, y))
|
||||
.await
|
||||
.map_err(|e| (axum::http::StatusCode::INTERNAL_SERVER_ERROR, format!("Database error: {}", e)))?
|
||||
@@ -137,6 +141,12 @@ async fn get_tile_buildings(
|
||||
State(state): State<Arc<AppState>>,
|
||||
) -> Result<Json<Vec<MapWay>>, (axum::http::StatusCode, String)> {
|
||||
let query = "SELECT id, tags, points FROM map_data.buildings WHERE zoom = ? AND tile_x = ? AND tile_y = ?";
|
||||
|
||||
// Optimization: Don't load buildings for low zoom levels
|
||||
if z < 13 {
|
||||
return Ok(Json(Vec::new()));
|
||||
}
|
||||
|
||||
let rows = state.scylla_session.query(query, (z, x, y))
|
||||
.await
|
||||
.map_err(|e| (axum::http::StatusCode::INTERNAL_SERVER_ERROR, format!("Database error: {}", e)))?
|
||||
@@ -169,6 +179,12 @@ async fn get_tile_landuse(
|
||||
State(state): State<Arc<AppState>>,
|
||||
) -> Result<Json<Vec<MapWay>>, (axum::http::StatusCode, String)> {
|
||||
println!("Request: get_tile_landuse({}, {}, {})", z, x, y);
|
||||
|
||||
// Optimization: Don't load landuse for low zoom levels
|
||||
if z < 11 {
|
||||
return Ok(Json(Vec::new()));
|
||||
}
|
||||
|
||||
let query = "SELECT id, tags, points FROM map_data.landuse WHERE zoom = ? AND tile_x = ? AND tile_y = ?";
|
||||
println!("Executing query...");
|
||||
let result = state.scylla_session.query(query, (z, x, y)).await;
|
||||
@@ -210,7 +226,11 @@ async fn get_tile_water(
|
||||
Path((z, x, y)): Path<(i32, i32, i32)>,
|
||||
State(state): State<Arc<AppState>>,
|
||||
) -> Result<Json<Vec<MapWay>>, (axum::http::StatusCode, String)> {
|
||||
let query = "SELECT id, tags, points FROM map_data.water WHERE zoom = ? AND tile_x = ? AND tile_y = ?";
|
||||
let query = if z < 9 {
|
||||
"SELECT id, tags, points FROM map_data.water WHERE zoom = ? AND tile_x = ? AND tile_y = ? LIMIT 10000"
|
||||
} else {
|
||||
"SELECT id, tags, points FROM map_data.water WHERE zoom = ? AND tile_x = ? AND tile_y = ?"
|
||||
};
|
||||
let rows = state.scylla_session.query(query, (z, x, y))
|
||||
.await
|
||||
.map_err(|e| (axum::http::StatusCode::INTERNAL_SERVER_ERROR, format!("Database error: {}", e)))?
|
||||
@@ -241,7 +261,11 @@ async fn get_tile_railways(
|
||||
Path((z, x, y)): Path<(i32, i32, i32)>,
|
||||
State(state): State<Arc<AppState>>,
|
||||
) -> Result<Json<Vec<MapWay>>, (axum::http::StatusCode, String)> {
|
||||
let query = "SELECT id, tags, points FROM map_data.railways WHERE zoom = ? AND tile_x = ? AND tile_y = ?";
|
||||
let query = if z < 9 {
|
||||
"SELECT id, tags, points FROM map_data.railways WHERE zoom = ? AND tile_x = ? AND tile_y = ? LIMIT 10000"
|
||||
} else {
|
||||
"SELECT id, tags, points FROM map_data.railways WHERE zoom = ? AND tile_x = ? AND tile_y = ?"
|
||||
};
|
||||
let rows = state.scylla_session.query(query, (z, x, y))
|
||||
.await
|
||||
.map_err(|e| (axum::http::StatusCode::INTERNAL_SERVER_ERROR, format!("Database error: {}", e)))?
|
||||
|
||||
Reference in New Issue
Block a user