Files
a301_server/main.go
2026-02-24 13:18:43 +09:00

58 lines
1.4 KiB
Go

package main
import (
"log"
"a301_server/internal/announcement"
"a301_server/internal/auth"
"a301_server/internal/download"
"a301_server/pkg/config"
"a301_server/pkg/database"
"a301_server/routes"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/cors"
"github.com/gofiber/fiber/v2/middleware/logger"
)
func main() {
config.Load()
if err := database.ConnectMySQL(); err != nil {
log.Fatalf("MySQL 연결 실패: %v", err)
}
log.Println("MySQL 연결 성공")
// AutoMigrate
database.DB.AutoMigrate(&auth.User{}, &announcement.Announcement{}, &download.Info{})
if err := database.ConnectRedis(); err != nil {
log.Fatalf("Redis 연결 실패: %v", err)
}
log.Println("Redis 연결 성공")
// 의존성 주입
authRepo := auth.NewRepository(database.DB)
authSvc := auth.NewService(authRepo, database.RDB)
authHandler := auth.NewHandler(authSvc)
annRepo := announcement.NewRepository(database.DB)
annSvc := announcement.NewService(annRepo)
annHandler := announcement.NewHandler(annSvc)
dlRepo := download.NewRepository(database.DB)
dlSvc := download.NewService(dlRepo)
dlHandler := download.NewHandler(dlSvc)
app := fiber.New()
app.Use(logger.New())
app.Use(cors.New(cors.Config{
AllowOrigins: "*",
AllowHeaders: "Origin, Content-Type, Authorization",
AllowMethods: "GET, POST, PUT, DELETE",
}))
routes.Register(app, authHandler, annHandler, dlHandler)
log.Fatal(app.Listen(":" + config.C.AppPort))
}