diff --git a/cmd/main.go b/cmd/main.go index 8ffd1ee..7460dfa 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -1,10 +1,14 @@ package main import ( + "context" "feedsystem_video_go/internal/config" "feedsystem_video_go/internal/db" apphttp "feedsystem_video_go/internal/http" + rediscache "feedsystem_video_go/internal/redis" "log" + "strconv" + "time" ) func main() { @@ -16,7 +20,7 @@ func main() { } // Connect database - log.Printf("Database config: %v", cfg.Database) + //log.Printf("Database config: %v", cfg.Database) sqlDB, err := db.NewDB(cfg.Database) if err != nil { log.Fatalf("Failed to connect database: %v", err) @@ -26,10 +30,28 @@ func main() { } defer db.CloseDB(sqlDB) + // Connect redis (optional, used for caching) + cache, err := rediscache.NewFromEnv() + if err != nil { + log.Printf("Redis config error (cache disabled): %v", err) + cache = nil + } else { + pingCtx, cancel := context.WithTimeout(context.Background(), 300*time.Millisecond) + defer cancel() + if err := cache.Ping(pingCtx); err != nil { + log.Printf("Redis not available (cache disabled): %v", err) + _ = cache.Close() + cache = nil + } else { + defer cache.Close() + log.Printf("Redis connected (cache enabled)") + } + } + // Set router - r := apphttp.SetRouter(sqlDB) - log.Printf("Server is running on port %s", cfg.Server.Port) - if err := r.Run(":" + cfg.Server.Port); err != nil { + r := apphttp.SetRouter(sqlDB, cache) + log.Printf("Server is running on port %d", cfg.Server.Port) + if err := r.Run(":" + strconv.Itoa(cfg.Server.Port)); err != nil { log.Fatalf("Failed to run server: %v", err) } } diff --git a/internal/config/loadconfig.go b/internal/config/loadconfig.go index d13e5a9..763f11b 100644 --- a/internal/config/loadconfig.go +++ b/internal/config/loadconfig.go @@ -12,12 +12,12 @@ type Config struct { } type ServerConfig struct { - Port string `yaml:"port"` + Port int `yaml:"port"` } type DatabaseConfig struct { Host string `yaml:"host"` - Port string `yaml:"port"` + Port int `yaml:"port"` User string `yaml:"user"` Password string `yaml:"password"` DBName string `yaml:"dbname"` diff --git a/internal/db/db.go b/internal/db/db.go index 30e1202..f082f97 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -12,7 +12,7 @@ import ( ) func NewDB(dbcfg config.DatabaseConfig) (*gorm.DB, error) { - dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", + dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local", dbcfg.User, dbcfg.Password, dbcfg.Host, dbcfg.Port, dbcfg.DBName) db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})