code refactoring

This commit is contained in:
2025-06-18 11:13:47 +02:00
parent a87b6a0c06
commit e46ce3e2b2
5 changed files with 45 additions and 60 deletions

View File

@@ -11,29 +11,23 @@ import (
"github.com/ceticamarco/zephyr/types" "github.com/ceticamarco/zephyr/types"
) )
// Structure representing the JSON response // Structures representing the JSON response
type tempRes struct {
Min float64 `json:"min"`
Max float64 `json:"max"`
}
type fsRes struct {
Day float64 `json:"day"`
}
type weatherRes struct {
Title string `json:"main"`
Description string `json:"description"`
Icon string `json:"icon"`
}
type dailyRes struct { type dailyRes struct {
Temp tempRes `json:"temp"` Temp struct {
FeelsLike fsRes `json:"feels_like"` Min float64 `json:"min"`
Weather []weatherRes `json:"weather"` Max float64 `json:"max"`
WindSpeed float64 `json:"wind_speed"` } `json:"temp"`
WindDeg float64 `json:"wind_deg"` FeelsLike struct {
Timestamp int64 `json:"dt"` Day float64 `json:"day"`
} `json:"feels_like"`
Weather []struct {
Title string `json:"main"`
Description string `json:"description"`
Icon string `json:"icon"`
} `json:"weather"`
WindSpeed float64 `json:"wind_speed"`
WindDeg float64 `json:"wind_deg"`
Timestamp int64 `json:"dt"`
} }
type forecastRes struct { type forecastRes struct {
@@ -76,7 +70,6 @@ func getForecastEntity(dailyForecast dailyRes) types.ForecastEntity {
Speed: strconv.FormatFloat(dailyForecast.WindSpeed, 'f', 2, 64), Speed: strconv.FormatFloat(dailyForecast.WindSpeed, 'f', 2, 64),
}, },
} }
} }
func GetForecast(city *types.City, apiKey string) (types.Forecast, error) { func GetForecast(city *types.City, apiKey string) (types.Forecast, error) {

View File

@@ -31,17 +31,15 @@ func GetMetrics(city *types.City, apiKey string) (types.Metrics, error) {
} }
defer res.Body.Close() defer res.Body.Close()
// Structures representing the JSON response // Structure representing the JSON response
type CurrentRes struct {
Humidity int `json:"humidity"`
Pressure int `json:"pressure"`
DewPoint float64 `json:"dew_point"`
UvIndex float64 `json:"uvi"`
Visibility float64 `json:"visibility"`
}
type MetricsRes struct { type MetricsRes struct {
Current CurrentRes `json:"current"` Current struct {
Humidity int `json:"humidity"`
Pressure int `json:"pressure"`
DewPoint float64 `json:"dew_point"`
UvIndex float64 `json:"uvi"`
Visibility float64 `json:"visibility"`
} `json:"current"`
} }
var metricRes MetricsRes var metricRes MetricsRes

View File

@@ -63,20 +63,18 @@ func GetWeather(city *types.City, apiKey string) (types.Weather, error) {
} }
defer res.Body.Close() defer res.Body.Close()
// Structures representing the JSON response // Structure representing the JSON response
type InfoRes struct {
Title string `json:"main"`
Description string `json:"description"`
Icon string `json:"icon"`
}
type CurrentRes struct {
FeelsLike float64 `json:"feels_like"`
Temperature float64 `json:"temp"`
Timestamp int64 `json:"dt"`
Weather []InfoRes `json:"weather"`
}
type WeatherRes struct { type WeatherRes struct {
Current CurrentRes `json:"current"` Current struct {
FeelsLike float64 `json:"feels_like"`
Temperature float64 `json:"temp"`
Timestamp int64 `json:"dt"`
Weather []struct {
Title string `json:"main"`
Description string `json:"description"`
Icon string `json:"icon"`
} `json:"weather"`
} `json:"current"`
} }
var weather WeatherRes var weather WeatherRes

View File

@@ -62,14 +62,12 @@ func GetWind(city *types.City, apiKey string) (types.Wind, error) {
defer res.Body.Close() defer res.Body.Close()
// Structures representing the JSON response // Structure representing the JSON response
type CurrentRes struct {
Speed float64 `json:"wind_speed"`
Degrees float64 `json:"wind_deg"`
}
type WindRes struct { type WindRes struct {
Current CurrentRes `json:"current"` Current struct {
Speed float64 `json:"wind_speed"`
Degrees float64 `json:"wind_deg"`
} `json:"current"`
} }
var windRes WindRes var windRes WindRes

View File

@@ -1,6 +1,7 @@
package types package types
import ( import (
"strings"
"time" "time"
) )
@@ -39,8 +40,8 @@ func InitCache() *Caches {
} }
} }
func (cache *Cache[T]) GetEntry(key string, ttl int8) (T, bool) { func (cache *Cache[T]) GetEntry(cityName string, ttl int8) (T, bool) {
val, isPresent := cache.Data[key] val, isPresent := cache.Data[strings.ToUpper(cityName)]
// If key is not present, return a zero value // If key is not present, return a zero value
if !isPresent { if !isPresent {
@@ -60,11 +61,10 @@ func (cache *Cache[T]) GetEntry(key string, ttl int8) (T, bool) {
func (cache *Cache[T]) AddEntry(entry T, cityName string) { func (cache *Cache[T]) AddEntry(entry T, cityName string) {
currentTime := time.Now() currentTime := time.Now()
cache.Data[cityName] = CacheEntity[T]{ cache.Data[strings.ToUpper(cityName)] = CacheEntity[T]{
element: entry, element: entry,
timestamp: currentTime, timestamp: currentTime,
} }
} }
func (moon *CacheEntity[Moon]) GetEntry(ttl int8) (Moon, bool) { func (moon *CacheEntity[Moon]) GetEntry(ttl int8) (Moon, bool) {
@@ -86,8 +86,6 @@ func (moon *CacheEntity[Moon]) GetEntry(ttl int8) (Moon, bool) {
} }
func (cache *CacheEntity[Moon]) AddEntry(entry Moon) { func (cache *CacheEntity[Moon]) AddEntry(entry Moon) {
currentTime := time.Now()
cache.element = entry cache.element = entry
cache.timestamp = currentTime cache.timestamp = time.Now()
} }