All checks were successful
Server CI/CD / deploy (push) Successful in 35s
유저 권한 변경(PATCH /api/users/:id/role) CORS 오류 수정 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
67 lines
1.8 KiB
Go
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))
|
|
}
|