mirror of
https://github.com/pocket-id/pocket-id.git
synced 2025-12-06 05:13:01 +03:00
79 lines
1.7 KiB
Go
79 lines
1.7 KiB
Go
package bootstrap
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
_ "github.com/golang-migrate/migrate/v4/source/file"
|
|
"golang-rest-api-template/internal/common"
|
|
"golang-rest-api-template/internal/common/middleware"
|
|
"golang-rest-api-template/internal/handler"
|
|
"golang-rest-api-template/internal/job"
|
|
"golang-rest-api-template/internal/utils"
|
|
"golang.org/x/time/rate"
|
|
"log"
|
|
"os"
|
|
"time"
|
|
)
|
|
|
|
func Bootstrap() {
|
|
common.InitDatabase()
|
|
common.InitDbConfig()
|
|
initApplicationImages()
|
|
job.RegisterJobs()
|
|
initRouter()
|
|
}
|
|
|
|
func initRouter() {
|
|
switch common.EnvConfig.AppEnv {
|
|
case "production":
|
|
gin.SetMode(gin.ReleaseMode)
|
|
case "development":
|
|
gin.SetMode(gin.DebugMode)
|
|
case "test":
|
|
gin.SetMode(gin.TestMode)
|
|
}
|
|
|
|
r := gin.Default()
|
|
|
|
r.Use(gin.Logger())
|
|
|
|
r.Use(middleware.Cors())
|
|
r.Use(middleware.RateLimiter(rate.Every(time.Second), 60))
|
|
|
|
apiGroup := r.Group("/api")
|
|
handler.RegisterRoutes(apiGroup)
|
|
handler.RegisterOIDCRoutes(apiGroup)
|
|
handler.RegisterUserRoutes(apiGroup)
|
|
handler.RegisterConfigurationRoutes(apiGroup)
|
|
if common.EnvConfig.AppEnv != "production" {
|
|
handler.RegisterTestRoutes(apiGroup)
|
|
}
|
|
|
|
baseGroup := r.Group("/")
|
|
handler.RegisterWellKnownRoutes(baseGroup)
|
|
|
|
if err := r.Run(common.EnvConfig.Host + ":" + common.EnvConfig.Port); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
}
|
|
|
|
func initApplicationImages() {
|
|
dirPath := common.EnvConfig.UploadPath + "/application-images"
|
|
|
|
files, err := os.ReadDir(dirPath)
|
|
if err != nil && !os.IsNotExist(err) {
|
|
log.Fatalf("Error reading directory: %v", err)
|
|
}
|
|
|
|
// Skip if files already exist
|
|
if len(files) > 1 {
|
|
return
|
|
}
|
|
|
|
// Copy files from source to destination
|
|
err = utils.CopyDirectory("./images", dirPath)
|
|
if err != nil {
|
|
log.Fatalf("Error copying directory: %v", err)
|
|
}
|
|
}
|