selvaGo/cmd/main.go
2025-03-21 16:48:31 -06:00

62 lines
1.4 KiB
Go

package main
import (
"html/template"
"log"
"github.com/gin-gonic/gin"
_ "github.com/go-sql-driver/mysql"
"go_selva/internal/api"
"go_selva/internal/db"
)
func main() {
// Initialize database connection
database, err := db.InitDB()
if err != nil {
log.Fatalf("Failed to initialize database: %v", err)
}
defer database.Close()
// Initialize Gin router
router := gin.Default()
// Register the safeHTML function
router.SetFuncMap(template.FuncMap{
"safeHTML": func(s string) template.HTML {
return template.HTML(s)
},
})
// Load HTML templates
router.LoadHTMLGlob("templates/*")
// Serve static files (CSS)
router.Static("/static", "./static")
// Initialize API handlers
apiHandler := api.NewAPIHandler(database)
// Define API routes
apiGroup := router.Group("/nombres")
{
apiGroup.GET("/search", apiHandler.SearchNombres)
apiGroup.POST("", apiHandler.CreateNombre)
apiGroup.GET("", apiHandler.GetNombres)
apiGroup.GET("/:id", apiHandler.GetNombreByID)
apiGroup.PUT("/:id", apiHandler.UpdateNombre)
apiGroup.DELETE("/:id", apiHandler.DeleteNombre)
apiGroup.GET("/html/edit/:id", apiHandler.EditNombreHTML)
apiGroup.POST("/html/update/:id", apiHandler.UpdateNombreHTML)
}
// HTML Routes
apiGroup.GET("/html", apiHandler.GetNombresHTML)
apiGroup.GET("/html/:id", apiHandler.GetNombreByIDHTML)
// Start the server
if err := router.Run(":8080"); err != nil {
log.Fatalf("Failed to start server: %v", err)
}
}