update
This commit is contained in:
@@ -111,11 +111,7 @@ async fn get_tile_ways(
|
||||
Path((z, x, y)): Path<(i32, i32, i32)>,
|
||||
State(state): State<Arc<AppState>>,
|
||||
) -> impl IntoResponse {
|
||||
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 query = "SELECT id, tags, points FROM map_data.ways WHERE zoom = ? AND tile_x = ? AND tile_y = ? LIMIT 50000";
|
||||
let rows = match state.scylla_session.query(query, (z, x, y)).await {
|
||||
Ok(res) => res.rows.unwrap_or_default(),
|
||||
Err(e) => return (axum::http::StatusCode::INTERNAL_SERVER_ERROR, format!("Database error: {}", e)).into_response(),
|
||||
@@ -140,7 +136,7 @@ async fn get_tile_buildings(
|
||||
Path((z, x, y)): Path<(i32, i32, i32)>,
|
||||
State(state): State<Arc<AppState>>,
|
||||
) -> impl IntoResponse {
|
||||
let query = "SELECT id, tags, points FROM map_data.buildings WHERE zoom = ? AND tile_x = ? AND tile_y = ?";
|
||||
let query = "SELECT id, tags, points FROM map_data.buildings WHERE zoom = ? AND tile_x = ? AND tile_y = ? LIMIT 50000";
|
||||
|
||||
// Optimization: Don't load buildings for low zoom levels
|
||||
if z < 12 {
|
||||
@@ -176,7 +172,7 @@ async fn get_tile_landuse(
|
||||
return ([(header::CONTENT_TYPE, "application/octet-stream")], vec![]).into_response();
|
||||
}
|
||||
|
||||
let query = "SELECT id, tags, points FROM map_data.landuse WHERE zoom = ? AND tile_x = ? AND tile_y = ?";
|
||||
let query = "SELECT id, tags, points FROM map_data.landuse WHERE zoom = ? AND tile_x = ? AND tile_y = ? LIMIT 50000";
|
||||
let rows = match state.scylla_session.query(query, (z, x, y)).await {
|
||||
Ok(res) => res.rows.unwrap_or_default(),
|
||||
Err(e) => return (axum::http::StatusCode::INTERNAL_SERVER_ERROR, format!("Database error: {}", e)).into_response(),
|
||||
@@ -201,11 +197,7 @@ async fn get_tile_water(
|
||||
Path((z, x, y)): Path<(i32, i32, i32)>,
|
||||
State(state): State<Arc<AppState>>,
|
||||
) -> impl IntoResponse {
|
||||
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 query = "SELECT id, tags, points FROM map_data.water WHERE zoom = ? AND tile_x = ? AND tile_y = ? LIMIT 50000";
|
||||
let rows = match state.scylla_session.query(query, (z, x, y)).await {
|
||||
Ok(res) => res.rows.unwrap_or_default(),
|
||||
Err(e) => return (axum::http::StatusCode::INTERNAL_SERVER_ERROR, format!("Database error: {}", e)).into_response(),
|
||||
@@ -230,11 +222,7 @@ async fn get_tile_railways(
|
||||
Path((z, x, y)): Path<(i32, i32, i32)>,
|
||||
State(state): State<Arc<AppState>>,
|
||||
) -> impl IntoResponse {
|
||||
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 query = "SELECT id, tags, points FROM map_data.railways WHERE zoom = ? AND tile_x = ? AND tile_y = ? LIMIT 50000";
|
||||
let rows = match state.scylla_session.query(query, (z, x, y)).await {
|
||||
Ok(res) => res.rows.unwrap_or_default(),
|
||||
Err(e) => return (axum::http::StatusCode::INTERNAL_SERVER_ERROR, format!("Database error: {}", e)).into_response(),
|
||||
@@ -303,11 +291,7 @@ async fn get_tile_all(
|
||||
}
|
||||
|
||||
// Ways
|
||||
let query_ways = 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 query_ways = "SELECT id, tags, points FROM map_data.ways WHERE zoom = ? AND tile_x = ? AND tile_y = ? LIMIT 50000";
|
||||
let rows_ways = state.scylla_session.query(query_ways, (z, x, y)).await.ok().and_then(|r| r.rows).unwrap_or_default();
|
||||
let mut ways = Vec::new();
|
||||
for row in rows_ways {
|
||||
@@ -319,7 +303,7 @@ async fn get_tile_all(
|
||||
// Buildings
|
||||
let mut buildings = Vec::new();
|
||||
if z >= 13 {
|
||||
let query_buildings = "SELECT id, tags, points FROM map_data.buildings WHERE zoom = ? AND tile_x = ? AND tile_y = ?";
|
||||
let query_buildings = "SELECT id, tags, points FROM map_data.buildings WHERE zoom = ? AND tile_x = ? AND tile_y = ? LIMIT 50000";
|
||||
let rows_buildings = state.scylla_session.query(query_buildings, (z, x, y)).await.ok().and_then(|r| r.rows).unwrap_or_default();
|
||||
for row in rows_buildings {
|
||||
if let Ok((id, tags, points)) = row.into_typed::<(i64, std::collections::HashMap<String, String>, Vec<u8>)>() {
|
||||
@@ -331,7 +315,7 @@ async fn get_tile_all(
|
||||
// Landuse
|
||||
let mut landuse = Vec::new();
|
||||
if z >= 4 {
|
||||
let query_landuse = "SELECT id, tags, points FROM map_data.landuse WHERE zoom = ? AND tile_x = ? AND tile_y = ?";
|
||||
let query_landuse = "SELECT id, tags, points FROM map_data.landuse WHERE zoom = ? AND tile_x = ? AND tile_y = ? LIMIT 50000";
|
||||
let rows_landuse = state.scylla_session.query(query_landuse, (z, x, y)).await.ok().and_then(|r| r.rows).unwrap_or_default();
|
||||
for row in rows_landuse {
|
||||
if let Ok((id, tags, points)) = row.into_typed::<(i64, std::collections::HashMap<String, String>, Vec<u8>)>() {
|
||||
@@ -341,11 +325,7 @@ async fn get_tile_all(
|
||||
}
|
||||
|
||||
// Water
|
||||
let query_water = 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 query_water = "SELECT id, tags, points FROM map_data.water WHERE zoom = ? AND tile_x = ? AND tile_y = ? LIMIT 50000";
|
||||
let rows_water = state.scylla_session.query(query_water, (z, x, y)).await.ok().and_then(|r| r.rows).unwrap_or_default();
|
||||
let mut water = Vec::new();
|
||||
for row in rows_water {
|
||||
@@ -355,11 +335,7 @@ async fn get_tile_all(
|
||||
}
|
||||
|
||||
// Railways
|
||||
let query_railways = 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 query_railways = "SELECT id, tags, points FROM map_data.railways WHERE zoom = ? AND tile_x = ? AND tile_y = ? LIMIT 50000";
|
||||
let rows_railways = state.scylla_session.query(query_railways, (z, x, y)).await.ok().and_then(|r| r.rows).unwrap_or_default();
|
||||
let mut railways = Vec::new();
|
||||
for row in rows_railways {
|
||||
|
||||
Reference in New Issue
Block a user