Adds handler structs and user handler

This commit is contained in:
Dennis Schoepf 2024-04-28 20:05:36 +02:00
parent 832b91a9b5
commit 9fda114cd3
4 changed files with 46 additions and 11 deletions

View file

@ -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
}

13
internal/api/handler.go Normal file
View file

@ -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}
}

30
internal/api/user.go Normal file
View file

@ -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})
}

View file

@ -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"})
}