Refactor weather update query in WeatherWorker: Simplified the SQL logic for assigning random weather types to regions by removing unnecessary joins and using a subquery for random selection. Enhanced comments for clarity on the individual weather assignment process for each region.
This commit is contained in:
@@ -12,6 +12,7 @@ pub struct WeatherWorker {
|
||||
|
||||
// Query zum Aktualisieren des Wetters für alle Regionen
|
||||
// Wählt für jede Region ein zufälliges Wetter aus allen verfügbaren Wettertypen aus
|
||||
// Wichtig: Jede Region bekommt ein individuelles, zufälliges Wetter
|
||||
const QUERY_UPDATE_WEATHER: &str = r#"
|
||||
WITH all_regions AS (
|
||||
SELECT DISTINCT r.id AS region_id
|
||||
@@ -19,21 +20,16 @@ const QUERY_UPDATE_WEATHER: &str = r#"
|
||||
JOIN falukant_type.region tr ON r.region_type_id = tr.id
|
||||
WHERE tr.label_tr = 'city'
|
||||
),
|
||||
all_weather_types AS (
|
||||
SELECT id AS weather_type_id, ROW_NUMBER() OVER (ORDER BY RANDOM()) AS rn
|
||||
FROM falukant_type.weather
|
||||
),
|
||||
random_weather AS (
|
||||
SELECT
|
||||
ar.region_id,
|
||||
awt.weather_type_id
|
||||
FROM all_regions ar
|
||||
CROSS JOIN LATERAL (
|
||||
SELECT weather_type_id
|
||||
FROM all_weather_types
|
||||
(
|
||||
SELECT wt.id
|
||||
FROM falukant_type.weather wt
|
||||
ORDER BY RANDOM()
|
||||
LIMIT 1
|
||||
) awt
|
||||
) AS weather_type_id
|
||||
FROM all_regions ar
|
||||
)
|
||||
INSERT INTO falukant_data.weather (region_id, weather_type_id)
|
||||
SELECT rw.region_id, rw.weather_type_id
|
||||
|
||||
Reference in New Issue
Block a user