88 lines
2.3 KiB
Go
88 lines
2.3 KiB
Go
package handlers
|
|
|
|
import (
|
|
"strconv"
|
|
|
|
"git.bhasher.com/bhasher/focus/backend/db"
|
|
"git.bhasher.com/bhasher/focus/types"
|
|
"github.com/gofiber/fiber/v2"
|
|
)
|
|
|
|
func CreateCards(c *fiber.Ctx) error {
|
|
card := types.Card{}
|
|
if err := c.BodyParser(&card); err != nil {
|
|
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Cannot parse request"})
|
|
}
|
|
|
|
id, err := db.CreateCard(card)
|
|
if err != nil {
|
|
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"error": "Cannot create card"})
|
|
}
|
|
|
|
return c.Status(fiber.StatusCreated).JSON(fiber.Map{"id": id})
|
|
}
|
|
|
|
func GetAllCardsOf(c *fiber.Ctx) error {
|
|
listID, err := strconv.Atoi(c.Params("list_id"))
|
|
if err != nil {
|
|
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid list ID"})
|
|
}
|
|
|
|
lists, err := db.GetAllListsOf(listID)
|
|
if err != nil {
|
|
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"error": "Cannot retrieve cards"})
|
|
}
|
|
|
|
return c.JSON(lists)
|
|
}
|
|
|
|
func GetCard(c *fiber.Ctx) error {
|
|
id, err := strconv.Atoi(c.Params("id"))
|
|
if err != nil {
|
|
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid card ID"})
|
|
}
|
|
|
|
card, err := db.GetCard(id)
|
|
if err != nil {
|
|
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"error": "Cannot retrieve card"})
|
|
}
|
|
if card == nil {
|
|
return c.Status(fiber.StatusNotFound).JSON(fiber.Map{"error": "Card not found"})
|
|
}
|
|
|
|
return c.JSON(card)
|
|
}
|
|
|
|
func DeleteCard(c *fiber.Ctx) error {
|
|
id, err := strconv.Atoi(c.Params("id"))
|
|
if err != nil {
|
|
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid card ID"})
|
|
}
|
|
|
|
err = db.DeleteCard(id)
|
|
if err != nil {
|
|
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"error": "Cannot delete card"})
|
|
}
|
|
|
|
return c.SendStatus(fiber.StatusNoContent)
|
|
}
|
|
|
|
func UpdateCard(c *fiber.Ctx) error {
|
|
id, err := strconv.Atoi(c.Params("id"))
|
|
if err != nil {
|
|
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid card ID"})
|
|
}
|
|
|
|
card := types.Card{ID: id}
|
|
if err := c.BodyParser(&card); err != nil {
|
|
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Cannot parse request"})
|
|
}
|
|
|
|
err = db.UpdateCard(card)
|
|
if err != nil {
|
|
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"error": "Cannot update card"})
|
|
}
|
|
|
|
return c.SendStatus(fiber.StatusOK)
|
|
}
|