Схема Prisma

Ресурсы предоставляющие данные о прогнозе погоды для дальнейшей интеграции в собственные проекты.

Мы будем использовать
https://open-meteo.com/

Описание полей:

ПолеТипОписание
temperatureFloatТекущая температура воздуха на высоте 2м
apparentTemperatureFloatОщущаемая температура (с учетом ветра)
humidityIntОтносительная влажность воздуха (0-100%)
precipitationFloatОбщее количество осадков за период (мм)
rainFloatТолько дождь (мм)
showersFloatЛивни (мм)
snowfallFloatСнег (см)
weatherCodeIntWMO код погоды (0=ясно, 45=туман, 61=дождь и т.д.)
cloudCoverIntПроцент облаков (0-100%)
isDayBooleantrue=день, false=ночь

API запрос будет выглядеть так:

https://api.open-meteo.com/v1/forecast?latitude=63.7514&longitude=121.6329&current=temperature_2m,relative_humidity_2m,apparent_temperature,is_day,precipitation,rain,showers,snowfall,weather_code,cloud_cover&forecast_days=1

Здесь делаем подмену координат, на координаты города, данные которого мы хотим получить

Иконки

https://bas.dev/work/meteocons

https://erikflowers.github.io/weather-icons

https://www.amcharts.com/free-animated-svg-weather-icons

Схема Prisma

model Weather {
id Int @id @default(autoincrement())
cityId Int
city City @relation(fields: [cityId], references: [id], onDelete: Cascade)
// Основные метеопараметры
temperature Float // Температура (°C)
apparentTemperature Float? // Ощущаемая температура (°C)
humidity Int // Влажность (%)
// Осадки
precipitation Float? // Общее количество осадков (мм)
rain Float? // Дождь (мм)
showers Float? // Ливни (мм)
snowfall Float? // Снег (см)
// Состояние неба и облаков
weatherCode Int // Код погоды (WMO)
cloudCover Int? // Облачность (%)
// Дополнительная информация
isDay Boolean? // День или ночь
gmt String? // Часовой пояс (например: +3, +5, +7)
createdAt DateTime @default(now())
@@index([cityId])
@@index([createdAt])
@@map(“weather”)
}

Пример записей в БД