Files
bibliomane/internal/setup/setup.go
Arthur Lefebvre 9404013592 add post userbook
needed a refactor to check the id in db during dto validation
2025-10-17 01:13:35 +02:00

55 lines
1.8 KiB
Go

package setup
import (
"github.com/gin-contrib/cors"
"github.com/gin-gonic/gin"
"git.artlef.fr/PersonalLibraryManager/internal/appcontext"
"git.artlef.fr/PersonalLibraryManager/internal/config"
"git.artlef.fr/PersonalLibraryManager/internal/db"
i18nresource "git.artlef.fr/PersonalLibraryManager/internal/i18nresource"
"git.artlef.fr/PersonalLibraryManager/internal/jwtauth"
"git.artlef.fr/PersonalLibraryManager/internal/middleware"
"git.artlef.fr/PersonalLibraryManager/internal/routes"
)
func Setup(config *config.Config) *gin.Engine {
db := db.Initdb(config.DatabaseFilePath, config.DemoDataPath)
err := jwtauth.InitKey(config.JWTKey)
if err != nil {
panic(err)
}
r := gin.Default()
r.Use(cors.New(configureCors())) // All origins allowed by default
r.Use(middleware.Auth())
bundle := i18nresource.InitializeI18n()
r.GET("/mybooks", func(c *gin.Context) {
routes.GetMyBooksHanderl(appcontext.AppContext{C: c, Db: db, I18n: bundle})
})
r.GET("/search/:searchterm", func(c *gin.Context) {
routes.GetSearchBooksHandler(appcontext.AppContext{C: c, Db: db, I18n: bundle})
})
r.POST("/book", func(c *gin.Context) {
routes.PostBookHandler(appcontext.AppContext{C: c, Db: db, I18n: bundle})
})
r.POST("/userbook", func(c *gin.Context) {
routes.PostUserBookHandler(appcontext.AppContext{C: c, Db: db, I18n: bundle})
})
r.POST("/auth/signup", func(c *gin.Context) {
routes.PostSignupHandler(appcontext.AppContext{C: c, Db: db, I18n: bundle})
})
r.POST("/auth/login", func(c *gin.Context) {
routes.PostLoginHandler(appcontext.AppContext{C: c, Db: db, I18n: bundle})
})
return r
}
func configureCors() cors.Config {
config := cors.DefaultConfig()
config.AllowOrigins = []string{"http://localhost:5173"}
config.AllowPrivateNetwork = true
config.AllowCredentials = true
config.AllowHeaders = []string{"Authorization", "Content-Type"}
return config
}