From 5240968c33fc342fbf9bebd0a87b4cf53d6456d0 Mon Sep 17 00:00:00 2001 From: "a.antonov" Date: Sat, 21 Jun 2025 23:11:38 +0300 Subject: [PATCH] feat: planned structure --- internal/pkg/grib/config.go | 22 ++++++++++++++++++++++ internal/pkg/grib/grib.go | 3 +++ internal/service/deps.go | 4 ++-- internal/service/service.go | 16 ++++++++++++++-- 4 files changed, 41 insertions(+), 4 deletions(-) create mode 100644 internal/pkg/grib/config.go create mode 100644 internal/pkg/grib/grib.go diff --git a/internal/pkg/grib/config.go b/internal/pkg/grib/config.go new file mode 100644 index 0000000..c0804bf --- /dev/null +++ b/internal/pkg/grib/config.go @@ -0,0 +1,22 @@ +package downloader + +import ( + "fmt" + + env "github.com/caarlos0/env/v11" +) + +type Config struct { +} + +func NewConfig(servicePrefix string) (*Config, error) { + cfg := &Config{} + + if err := env.ParseWithOptions(cfg, env.Options{ + PrefixTagName: fmt.Sprintf("%s_GRIB_", servicePrefix), + }); err != nil { + return nil, err + } + + return cfg, nil +} diff --git a/internal/pkg/grib/grib.go b/internal/pkg/grib/grib.go new file mode 100644 index 0000000..320ac2a --- /dev/null +++ b/internal/pkg/grib/grib.go @@ -0,0 +1,3 @@ +package downloader + +// diff --git a/internal/service/deps.go b/internal/service/deps.go index 0becf3e..15f3945 100644 --- a/internal/service/deps.go +++ b/internal/service/deps.go @@ -11,6 +11,6 @@ type Redis interface { Get(key string) ([]byte, error) } -type Downloader interface { - Download(ctx context.Context) +type Grib interface { + Update(ctx context.Context) error } diff --git a/internal/service/service.go b/internal/service/service.go index 0ac3f89..4119bb5 100644 --- a/internal/service/service.go +++ b/internal/service/service.go @@ -1,10 +1,22 @@ package service +import ( + "context" +) + type Service struct { redis Redis downloader Downloader } -func New() *Service { - return &Service{} +func New(redis Redis, downloader Downloader) *Service { + return &Service{ + redis: redis, + downloader: downloader, + } +} + +// DownloadWeatherData downloads weather forecast data using the configured downloader +func (s *Service) DownloadWeatherData(ctx context.Context) error { + return s.downloader.Download(ctx) }