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
|
// 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
|
// 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#"
|
const QUERY_UPDATE_WEATHER: &str = r#"
|
||||||
WITH all_regions AS (
|
WITH all_regions AS (
|
||||||
SELECT DISTINCT r.id AS region_id
|
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
|
JOIN falukant_type.region tr ON r.region_type_id = tr.id
|
||||||
WHERE tr.label_tr = 'city'
|
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 (
|
random_weather AS (
|
||||||
SELECT
|
SELECT
|
||||||
ar.region_id,
|
ar.region_id,
|
||||||
awt.weather_type_id
|
(
|
||||||
|
SELECT wt.id
|
||||||
|
FROM falukant_type.weather wt
|
||||||
|
ORDER BY RANDOM()
|
||||||
|
LIMIT 1
|
||||||
|
) AS weather_type_id
|
||||||
FROM all_regions ar
|
FROM all_regions ar
|
||||||
CROSS JOIN LATERAL (
|
|
||||||
SELECT weather_type_id
|
|
||||||
FROM all_weather_types
|
|
||||||
ORDER BY RANDOM()
|
|
||||||
LIMIT 1
|
|
||||||
) awt
|
|
||||||
)
|
)
|
||||||
INSERT INTO falukant_data.weather (region_id, weather_type_id)
|
INSERT INTO falukant_data.weather (region_id, weather_type_id)
|
||||||
SELECT rw.region_id, rw.weather_type_id
|
SELECT rw.region_id, rw.weather_type_id
|
||||||
|
|||||||
Reference in New Issue
Block a user