package main

import (
	"context"
	"time"
	"tm/cmd/scraper/bootstrap"
)

func main() {
	// Load configuration
	config, err := bootstrap.InitConfig()
	if err != nil {
		panic(err)
	}

	// Initialize logger
	appLogger := bootstrap.InitLogger(config.Logging)
	appLogger.Info("Starting TED scraper application", map[string]interface{}{
		"version": "1.0.0",
	})

	// Initialize MongoDB connection
	mongoManager := bootstrap.InitMongoDB(config.Database.MongoDB, appLogger)
	defer func() {
		ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
		defer cancel()
		if err := mongoManager.Close(ctx); err != nil {
			appLogger.Error("Failed to close MongoDB connection", map[string]interface{}{
				"error": err.Error(),
			})
		}
	}()

	bootstrap.InitTEDScraper(*config, mongoManager, appLogger)

	appLogger.Info("TED scraper application stopped", map[string]interface{}{})
}
