From 9fda114cd3e1390c3a7553dc57ff5194fa7e9c7d Mon Sep 17 00:00:00 2001 From: Dennis Schoepf Date: Sun, 28 Apr 2024 20:05:36 +0200 Subject: [PATCH] Adds handler structs and user handler --- internal/api/api.go | 5 +++-- internal/api/handler.go | 13 +++++++++++++ internal/api/user.go | 30 ++++++++++++++++++++++++++++++ internal/api/users.go | 9 --------- 4 files changed, 46 insertions(+), 11 deletions(-) create mode 100644 internal/api/handler.go create mode 100644 internal/api/user.go delete mode 100644 internal/api/users.go diff --git a/internal/api/api.go b/internal/api/api.go index f14e559..bd41177 100644 --- a/internal/api/api.go +++ b/internal/api/api.go @@ -24,9 +24,10 @@ func Setup(app *fiber.App, db *sql.DB) error { Validator: apiKeyValidator(apiKey), })) - v1 := api.Group("/v1") + apiHandler := NewHandler(db) - v1.Get("/users", FetchAllUsersHandler) + v1 := api.Group("/v1") + v1.Post("/users", apiHandler.createUser) return nil } diff --git a/internal/api/handler.go b/internal/api/handler.go new file mode 100644 index 0000000..2b75080 --- /dev/null +++ b/internal/api/handler.go @@ -0,0 +1,13 @@ +package api + +import ( + "database/sql" +) + +type Handler struct { + db *sql.DB +} + +func NewHandler(db *sql.DB) *Handler { + return &Handler{db: db} +} diff --git a/internal/api/user.go b/internal/api/user.go new file mode 100644 index 0000000..c5e712e --- /dev/null +++ b/internal/api/user.go @@ -0,0 +1,30 @@ +package api + +import ( + "freed/internal/model" + + "github.com/gofiber/fiber/v2" +) + +func (h *Handler) createUser(c *fiber.Ctx) error { + user := new(model.User) + + if err := c.BodyParser(user); err != nil { + return err + } + + result, err := h.db.Exec("INSERT INTO user (first_name, email) VALUES (?, ?)", user.FirstName, user.Email) + + if err != nil { + return err + } + + id, err := result.LastInsertId() + + if err != nil { + return err + } + + c.SendStatus(201) + return c.JSON(&fiber.Map{"userId": id}) +} diff --git a/internal/api/users.go b/internal/api/users.go deleted file mode 100644 index cc3e4df..0000000 --- a/internal/api/users.go +++ /dev/null @@ -1,9 +0,0 @@ -package api - -import ( - "github.com/gofiber/fiber/v2" -) - -func FetchAllUsersHandler(ctx *fiber.Ctx) error { - return ctx.JSON(&fiber.Map{"users": "none"}) -}