html works without newline
This commit is contained in:
parent
5211f5beb7
commit
4bb69e98fa
5 changed files with 116 additions and 1 deletions
12
cmd/main.go
12
cmd/main.go
|
|
@ -21,7 +21,13 @@ func main() {
|
|||
// Initialize Gin router
|
||||
router := gin.Default()
|
||||
|
||||
// Initialize API handlers
|
||||
// Load HTML templates
|
||||
router.LoadHTMLGlob("templates/*")
|
||||
|
||||
// Serve static files (CSS)
|
||||
router.Static("/static", "./static")
|
||||
|
||||
// Initialize API handlers (MOVE THIS UP!)
|
||||
apiHandler := api.NewAPIHandler(database)
|
||||
|
||||
// Define API routes
|
||||
|
|
@ -35,6 +41,10 @@ func main() {
|
|||
apiGroup.DELETE("/:id", apiHandler.DeleteNombre)
|
||||
}
|
||||
|
||||
// HTML Routes (MOVE THIS DOWN!)
|
||||
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)
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package api
|
|||
|
||||
import (
|
||||
"database/sql"
|
||||
"log"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
|
|
@ -159,3 +160,51 @@ func (h *APIHandler) DeleteNombre(c *gin.Context) {
|
|||
|
||||
c.JSON(http.StatusOK, gin.H{"message": "Nombre deleted"})
|
||||
}
|
||||
|
||||
func (h *APIHandler) GetNombresHTML(c *gin.Context) {
|
||||
log.Println("GetNombresHTML called") // Add logging
|
||||
rows, err := h.DB.Query("SELECT NombreID, FamiliaID, Nombre, Fecha, ProveedorID, Precio, Inactivo FROM Nombres")
|
||||
if err != nil {
|
||||
log.Println("Database query error:", err) // Add logging
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
var nombres []Nombre
|
||||
for rows.Next() {
|
||||
var nombre Nombre
|
||||
if err := rows.Scan(&nombre.NombreID, &nombre.FamiliaID, &nombre.Nombre, &nombre.Fecha, &nombre.ProveedorID, &nombre.Precio, &nombre.Inactivo); err != nil {
|
||||
log.Println("Row scan error:", err) // Add logging
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
nombres = append(nombres, nombre)
|
||||
}
|
||||
|
||||
log.Println("Retrieved nombres:", nombres) // Add logging
|
||||
c.HTML(http.StatusOK, "nombres.html", nombres)
|
||||
log.Println("nombres.html rendered") //add log
|
||||
}
|
||||
|
||||
func (h *APIHandler) GetNombreByIDHTML(c *gin.Context) {
|
||||
id, err := strconv.Atoi(c.Param("id"))
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid ID"})
|
||||
return
|
||||
}
|
||||
|
||||
var nombre Nombre
|
||||
err = h.DB.QueryRow("SELECT NombreID, FamiliaID, Nombre, Fecha, ProveedorID, Precio, Inactivo FROM Nombres WHERE NombreID = ?", id).Scan(
|
||||
&nombre.NombreID, &nombre.FamiliaID, &nombre.Nombre, &nombre.Fecha, &nombre.ProveedorID, &nombre.Precio, &nombre.Inactivo)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
c.JSON(http.StatusNotFound, gin.H{"error": "Nombre not found"})
|
||||
} else {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
c.HTML(http.StatusOK, "nombre.html", nombre)
|
||||
}
|
||||
|
|
|
|||
22
static/style.css
Normal file
22
static/style.css
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
body {
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
th, td {
|
||||
border: 1px solid #ddd;
|
||||
padding: 8px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
th {
|
||||
background-color: #f2f2f2;
|
||||
}
|
||||
|
||||
tr:nth-child(even) {
|
||||
background-color: #f9f9f9;
|
||||
}
|
||||
21
templates/nombre.html
Normal file
21
templates/nombre.html
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>Nombre</title>
|
||||
<link rel="stylesheet" href="/static/style.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>Nombre Details</h1>
|
||||
<p><strong>NombreID:</strong> {{ .NombreID }}</p>
|
||||
<p><strong>FamiliaID:</strong> {{ .FamiliaID }}</p>
|
||||
<p><strong>Nombre:</strong> {{ .Nombre }}</p>
|
||||
<p><strong>Fecha:</strong> {{ .Fecha }}</p>
|
||||
<p><strong>ProveedorID:</strong> {{ .ProveedorID }}</p>
|
||||
<p><strong>Precio:</strong> {{ .Precio }}</p>
|
||||
<p><strong>Inactivo:</strong> {{ .Inactivo }}</p>
|
||||
<a href="/nombres">Back to List</a>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
13
templates/nombres.html
Normal file
13
templates/nombres.html
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<tbody>
|
||||
{{ range . }}
|
||||
<tr>
|
||||
<td>{{ .NombreID }}</td>
|
||||
<td>{{ .FamiliaID }}</td>
|
||||
<td>{{ .Nombre }}</td>
|
||||
<td>{{ .Fecha }}</td>
|
||||
<td>{{ .ProveedorID }}</td>
|
||||
<td>{{ .Precio }}</td>
|
||||
<td>{{ .Inactivo }}</td>
|
||||
</tr>
|
||||
{{ end }}
|
||||
</tbody>
|
||||
Loading…
Reference in a new issue