list daily weathers 구현

This commit is contained in:
2025-12-08 23:26:03 +09:00
parent e3494e5041
commit 66db03dc24
5 changed files with 120 additions and 0 deletions

View File

@@ -3,6 +3,7 @@ package gorm
import (
"context"
"fmt"
"time"
"github.com/neatflowcv/seven-skies/internal/pkg/domain"
"github.com/neatflowcv/seven-skies/internal/pkg/repository"
@@ -42,3 +43,17 @@ func (r *Repository) CreateWeather(ctx context.Context, weather *domain.Weather)
return nil
}
func (r *Repository) ListWeathers(ctx context.Context, from, to time.Time) ([]*domain.Weather, error) {
weathers, err := gorm.G[*Weather](r.db).Where("target_date BETWEEN ? AND ?", from, to).Find(ctx)
if err != nil {
return nil, fmt.Errorf("failed to list weathers: %w", err)
}
var ret []*domain.Weather
for _, weather := range weathers {
ret = append(ret, weather.toDomain())
}
return ret, nil
}

View File

@@ -25,3 +25,14 @@ func newModelWeather(weather *domain.Weather) *Weather {
Temperature: float64(weather.Temperature().Value),
}
}
func (w *Weather) toDomain() *domain.Weather {
return domain.NewWeather(
w.ID,
domain.WeatherSource(w.Source),
w.TargetDate,
w.ForecastDate,
domain.WeatherCondition(w.Condition),
domain.Temperature{Value: domain.Celsius(w.Temperature)},
)
}