From 0790a506eb85b12c13a1ee73dddc48720a756535 Mon Sep 17 00:00:00 2001 From: BenJameto Date: Sun, 30 Jun 2024 23:35:58 -0600 Subject: [PATCH] se agregaron las funciones del CRUD --- .gitignore | 2 ++ main.go | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 .gitignore create mode 100644 main.go diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2b6b356 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.mod +*.sum diff --git a/main.go b/main.go new file mode 100644 index 0000000..fd2254f --- /dev/null +++ b/main.go @@ -0,0 +1,81 @@ +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 = ? WERE 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")) +} \ No newline at end of file