package main import ( "database/sql" "log" "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/middleware/logger" _ "github.com/mattn/go-sqlite3" ) type Note struct { ID int `json:"id"` Title string `json:"title"` Message string `json:"message"` } func main() { app := fiber.New() app.Use(logger.New()) db, err := sql.Open("sqlite3", "./notes.db") if err != nil { log.Fatal(err) } defer db.Close() app.Get("/notes", func(c *fiber.Ctx) error { rows, err := db.Query("SELECT id, title, message FROM notes") if err != nil { return c.Status(500).JSON(fiber.Map{"error": err.Error()}) } defer rows.Close() var notes []Note for rows.Next() { var note Note if err := rows.Scan(¬e.ID, ¬e.Title, ¬e.Message); err != nil { return c.Status(500).JSON(fiber.Map{"error": err.Error()}) } notes = append(notes, note) } return c.JSON(notes) }) app.Post("/notes", func(c *fiber.Ctx) error { var newNote Note if err := c.BodyParser(&newNote); err != nil { return c.Status(400).JSON(fiber.Map{"error": err.Error()}) } _, err := db.Exec("INSERT INTO notes (title, message) VALUES (?, ?)", newNote.Title, newNote.Message) if err != nil { return c.Status(500).JSON(fiber.Map{"error": err.Error()}) } return c.Status(201).SendString("Nota creada exitosamente") }) app.Put("/notes/:id", func(c *fiber.Ctx) error { id := c.Params("id") var updateNote Note if err := c.BodyParser(&updateNote); err != nil { return c.Status(400).JSON(fiber.Map{"error": err.Error()}) } _, err := db.Exec("UPDATE notes SET title = ?, message = ? WHERE id = ?", updateNote.Title, updateNote.Message, id) if err != nil { return c.Status(500).JSON(fiber.Map{"error": err.Error()}) } return c.SendString("Nota actualizada con exito") }) app.Delete("/notes/:id", func(c *fiber.Ctx) error { id := c.Params("id") _, err := db.Exec("DELETE FROM notes WHERE id = ?", id) if err != nil { return c.Status(500).JSON(fiber.Map{"error": err.Error()}) } return c.SendString("Nota borrada con exito") }) log.Fatal(app.Listen(":8080")) }