package bootstrap import ( "time" "tm/pkg/config" ) // Config defines the scraper application configuration type Config struct { Database config.DatabaseConfig `mapstructure:"database"` Logging config.LoggingConfig `mapstructure:"logging"` TED ScraperConfig `mapstructure:"ted"` } type ScraperConfig struct { BaseURL string `mapstructure:"base_url"` Timeout time.Duration `mapstructure:"timeout"` MaxRetries int `mapstructure:"max_retries"` RetryDelay time.Duration `mapstructure:"retry_delay"` UserAgent string `mapstructure:"user_agent"` MaxConcurrency int `mapstructure:"max_concurrency"` DownloadDir string `mapstructure:"download_dir"` CleanupAfter time.Duration `mapstructure:"cleanup_after"` ScrapingInterval time.Duration `mapstructure:"scraping_interval"` } // LoadConfig loads the configuration from file func LoadConfig(path string) (*Config, error) { cfg := &Config{ // Set default values TED: ScraperConfig{ BaseURL: "https://ted.europa.eu/packages/daily", Timeout: 30 * time.Second, MaxRetries: 3, RetryDelay: 5 * time.Second, UserAgent: "TenderManagement-TED-Scraper/1.0", MaxConcurrency: 3, DownloadDir: "/tmp/ted_downloads", CleanupAfter: 24 * time.Hour, ScrapingInterval: 12 * time.Hour, }, } result, err := config.LoadConfig(path, cfg) if err != nil { return nil, err } return result, nil }