Files
a301_server/main.go
tolelom 2b8d342896
All checks were successful
Server CI/CD / deploy (push) Successful in 35s
fix: CORS AllowMethods에 PATCH 추가
유저 권한 변경(PATCH /api/users/:id/role) CORS 오류 수정

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-24 23:43:57 +09:00

67 lines
1.8 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)
// 초기 admin 계정 생성
if err := authSvc.EnsureAdmin(config.C.AdminUsername, config.C.AdminPassword); err != nil {
log.Printf("admin 계정 생성 실패: %v", err)
} else {
log.Printf("admin 계정 확인 완료: %s", config.C.AdminUsername)
}
annRepo := announcement.NewRepository(database.DB)
annSvc := announcement.NewService(annRepo)
annHandler := announcement.NewHandler(annSvc)
dlRepo := download.NewRepository(database.DB)
dlSvc := download.NewService(dlRepo, config.C.GameDir)
dlHandler := download.NewHandler(dlSvc, config.C.BaseURL)
app := fiber.New(fiber.Config{
StreamRequestBody: true,
})
app.Use(logger.New())
app.Use(cors.New(cors.Config{
AllowOrigins: "https://a301.tolelom.xyz",
AllowHeaders: "Origin, Content-Type, Authorization",
AllowMethods: "GET, POST, PUT, PATCH, DELETE",
}))
routes.Register(app, authHandler, annHandler, dlHandler)
log.Fatal(app.Listen(":" + config.C.AppPort))
}