Handler groups
This commit is contained in:
parent
236bea14dc
commit
0809efbf81
|
@ -9,6 +9,17 @@ import (
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func cardsRouter(router fiber.Router) error {
|
||||||
|
router.Post("/", CreateCard)
|
||||||
|
router.Get("/:id", GetCard)
|
||||||
|
router.Put("/:id", UpdateCard)
|
||||||
|
router.Delete("/:id", DeleteCard)
|
||||||
|
|
||||||
|
cardsTagsRouter(router.Group("/:card_id/tags"))
|
||||||
|
return nil
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
func CreateCard(c *fiber.Ctx) error {
|
func CreateCard(c *fiber.Ctx) error {
|
||||||
card := types.Card{}
|
card := types.Card{}
|
||||||
if err := c.BodyParser(&card); err != nil {
|
if err := c.BodyParser(&card); err != nil {
|
||||||
|
@ -31,38 +42,6 @@ func CreateCard(c *fiber.Ctx) error {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetProjectCards(c *fiber.Ctx) error {
|
|
||||||
projectID, err := strconv.Atoi(c.Params("project_id"))
|
|
||||||
if err != nil {
|
|
||||||
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
|
|
||||||
"error": "Invalid project_id",
|
|
||||||
"trace": fmt.Sprint(err),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
exists, err := db.ExistProject(projectID)
|
|
||||||
if err != nil {
|
|
||||||
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
|
|
||||||
"error": "Error finding project",
|
|
||||||
"trace": fmt.Sprint(err),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
if !exists {
|
|
||||||
return c.SendStatus(fiber.StatusNotFound)
|
|
||||||
}
|
|
||||||
|
|
||||||
cards, err := db.GetProjectsCards(projectID)
|
|
||||||
if err != nil {
|
|
||||||
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
|
|
||||||
"error": "Cannot retrieve cards",
|
|
||||||
"trace": fmt.Sprint(err),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
return c.Status(fiber.StatusOK).JSON(cards)
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetCard(c *fiber.Ctx) error {
|
func GetCard(c *fiber.Ctx) error {
|
||||||
id, err := strconv.Atoi(c.Params("id"))
|
id, err := strconv.Atoi(c.Params("id"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -10,6 +10,15 @@ import (
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func cardsTagsRouter(router fiber.Router) error {
|
||||||
|
router.Get("/", GetCardTags)
|
||||||
|
router.Delete("/", DeleteCardTags)
|
||||||
|
router.Post("/:tag_id", CreateCardTag)
|
||||||
|
router.Put("/:tag_id", UpdateCardTag)
|
||||||
|
router.Delete("/:tag_id", DeleteCardTag)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func CreateCardTag(c *fiber.Ctx) error {
|
func CreateCardTag(c *fiber.Ctx) error {
|
||||||
cardID, err := strconv.Atoi(c.Params("card_id"))
|
cardID, err := strconv.Atoi(c.Params("card_id"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
package handlers
|
||||||
|
|
||||||
|
import "github.com/gofiber/fiber/v2"
|
||||||
|
|
||||||
|
func APIRouter(router fiber.Router) error {
|
||||||
|
return v1Router(router.Group("/v1"))
|
||||||
|
}
|
||||||
|
|
||||||
|
func v1Router(router fiber.Router) error {
|
||||||
|
projectsRouter(router.Group("/projects"))
|
||||||
|
cardsRouter(router.Group("/cards"))
|
||||||
|
tagsRouter(router.Group("/tags"))
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// app.Post("/api/v1/cards", handlers.CreateCard)
|
||||||
|
// app.Get("/api/v1/cards/:id", handlers.GetCard)
|
||||||
|
// app.Put("/api/v1/cards/:id", handlers.UpdateCard)
|
||||||
|
// app.Delete("/api/v1/cards/:id", handlers.DeleteCard)
|
||||||
|
|
||||||
|
// app.Post("/api/v1/tags", handlers.CreateTag)
|
||||||
|
// app.Get("/api/v1/tags/:id", handlers.GetTag)
|
||||||
|
// app.Delete("/api/v1/tags/:id", handlers.DeleteTag)
|
||||||
|
// app.Put("/api/v1/tags/:id", handlers.UpdateTag)
|
|
@ -2,12 +2,24 @@ package handlers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"strconv"
|
||||||
|
|
||||||
"git.bhasher.com/bhasher/focus/backend/db"
|
"git.bhasher.com/bhasher/focus/backend/db"
|
||||||
"git.bhasher.com/bhasher/focus/backend/types"
|
"git.bhasher.com/bhasher/focus/backend/types"
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func projectsRouter(router fiber.Router) error {
|
||||||
|
router.Post("/", CreateProject)
|
||||||
|
router.Get("/", GetAllProjects)
|
||||||
|
router.Get("/:id", GetProject)
|
||||||
|
router.Put("/:id", UpdateProject)
|
||||||
|
router.Delete("/:id", DeleteProject)
|
||||||
|
router.Get(":id/cards", GetProjectCards)
|
||||||
|
router.Get(":id/tags", GetProjectTags)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func GetAllProjects(c *fiber.Ctx) error {
|
func GetAllProjects(c *fiber.Ctx) error {
|
||||||
projects, err := db.GetAllProjects()
|
projects, err := db.GetAllProjects()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -105,3 +117,61 @@ func DeleteProject(c *fiber.Ctx) error {
|
||||||
|
|
||||||
return c.SendStatus(fiber.StatusNoContent)
|
return c.SendStatus(fiber.StatusNoContent)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetProjectCards(c *fiber.Ctx) error {
|
||||||
|
projectID, err := strconv.Atoi(c.Params("id"))
|
||||||
|
if err != nil {
|
||||||
|
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid project ID"})
|
||||||
|
}
|
||||||
|
|
||||||
|
exists, err := db.ExistProject(projectID)
|
||||||
|
if err != nil {
|
||||||
|
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
|
||||||
|
"error": "Error finding project",
|
||||||
|
"trace": fmt.Sprint(err),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
if !exists {
|
||||||
|
return c.SendStatus(fiber.StatusNotFound)
|
||||||
|
}
|
||||||
|
|
||||||
|
cards, err := db.GetProjectsCards(projectID)
|
||||||
|
if err != nil {
|
||||||
|
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
|
||||||
|
"error": "Cannot retrieve cards",
|
||||||
|
"trace": fmt.Sprint(err),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
return c.Status(fiber.StatusOK).JSON(cards)
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetProjectTags(c *fiber.Ctx) error {
|
||||||
|
projectID, err := strconv.Atoi(c.Params("id"))
|
||||||
|
if err != nil {
|
||||||
|
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid project ID"})
|
||||||
|
}
|
||||||
|
|
||||||
|
exists, err := db.ExistProject(projectID)
|
||||||
|
if err != nil {
|
||||||
|
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
|
||||||
|
"error": "Error finding project",
|
||||||
|
"trace": fmt.Sprint(err),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
if !exists {
|
||||||
|
return c.SendStatus(fiber.StatusNotFound)
|
||||||
|
}
|
||||||
|
|
||||||
|
tags, err := db.GetProjectTags(projectID)
|
||||||
|
if err != nil {
|
||||||
|
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
|
||||||
|
"error": "Cannot retrieve tags",
|
||||||
|
"trace": fmt.Sprint(err),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
return c.Status(fiber.StatusOK).JSON(tags)
|
||||||
|
}
|
||||||
|
|
|
@ -9,6 +9,13 @@ import (
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func tagsRouter(router fiber.Router) {
|
||||||
|
router.Post("/", CreateTag)
|
||||||
|
router.Get("/:id", GetTag)
|
||||||
|
router.Delete("/:id", DeleteTag)
|
||||||
|
router.Put("/:id", UpdateTag)
|
||||||
|
}
|
||||||
|
|
||||||
func CreateTag(c *fiber.Ctx) error {
|
func CreateTag(c *fiber.Ctx) error {
|
||||||
tag := types.Tag{}
|
tag := types.Tag{}
|
||||||
if err := c.BodyParser(&tag); err != nil {
|
if err := c.BodyParser(&tag); err != nil {
|
||||||
|
@ -26,35 +33,6 @@ func CreateTag(c *fiber.Ctx) error {
|
||||||
return c.Status(fiber.StatusCreated).JSON(fiber.Map{"id": id})
|
return c.Status(fiber.StatusCreated).JSON(fiber.Map{"id": id})
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetProjectTags(c *fiber.Ctx) error {
|
|
||||||
projectID, err := strconv.Atoi(c.Params("project_id"))
|
|
||||||
if err != nil {
|
|
||||||
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid project_id"})
|
|
||||||
}
|
|
||||||
|
|
||||||
exists, err := db.ExistProject(projectID)
|
|
||||||
if err != nil {
|
|
||||||
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
|
|
||||||
"error": "Error finding project",
|
|
||||||
"trace": fmt.Sprint(err),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
if !exists {
|
|
||||||
return c.SendStatus(fiber.StatusNotFound)
|
|
||||||
}
|
|
||||||
|
|
||||||
tags, err := db.GetProjectTags(projectID)
|
|
||||||
if err != nil {
|
|
||||||
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
|
|
||||||
"error": "Cannot retrieve tags",
|
|
||||||
"trace": fmt.Sprint(err),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
return c.Status(fiber.StatusOK).JSON(tags)
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetTag(c *fiber.Ctx) error {
|
func GetTag(c *fiber.Ctx) error {
|
||||||
id, err := strconv.Atoi(c.Params("id"))
|
id, err := strconv.Atoi(c.Params("id"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -30,29 +30,7 @@ func main() {
|
||||||
AllowHeaders: "Origin, Content-Type, Accept",
|
AllowHeaders: "Origin, Content-Type, Accept",
|
||||||
}))
|
}))
|
||||||
|
|
||||||
app.Post("/api/v1/projects", handlers.CreateProject)
|
handlers.APIRouter(app.Group("/api"))
|
||||||
app.Get("/api/v1/projects", handlers.GetAllProjects)
|
|
||||||
app.Get("/api/v1/projects/:id", handlers.GetProject)
|
|
||||||
app.Put("/api/v1/projects/:id", handlers.UpdateProject)
|
|
||||||
app.Delete("/api/v1/projects/:id", handlers.DeleteProject)
|
|
||||||
app.Get("/api/v1/projects/:project_id/cards", handlers.GetProjectCards)
|
|
||||||
app.Get("/api/v1/projects/:project_id/tags", handlers.GetProjectTags)
|
|
||||||
|
|
||||||
app.Post("/api/v1/cards", handlers.CreateCard)
|
|
||||||
app.Get("/api/v1/cards/:id", handlers.GetCard)
|
|
||||||
app.Put("/api/v1/cards/:id", handlers.UpdateCard)
|
|
||||||
app.Delete("/api/v1/cards/:id", handlers.DeleteCard)
|
|
||||||
|
|
||||||
app.Post("/api/v1/tags", handlers.CreateTag)
|
|
||||||
app.Get("/api/v1/tags/:id", handlers.GetTag)
|
|
||||||
app.Delete("/api/v1/tags/:id", handlers.DeleteTag)
|
|
||||||
app.Put("/api/v1/tags/:id", handlers.UpdateTag)
|
|
||||||
|
|
||||||
app.Post("/api/v1/cards/:card_id/tags/:tag_id", handlers.CreateCardTag)
|
|
||||||
app.Get("/api/v1/cards/:card_id/tags", handlers.GetCardTags)
|
|
||||||
app.Put("/api/v1/cards/:card_id/tags/:tag_id", handlers.UpdateCardTag)
|
|
||||||
app.Delete("/api/v1/cards/:card_id/tags/:tag_id", handlers.DeleteCardTag)
|
|
||||||
app.Delete("/api/v1/cards/:card_id/tags", handlers.DeleteCardTags)
|
|
||||||
|
|
||||||
log.Fatal(app.Listen(fmt.Sprintf(":%v", port)))
|
log.Fatal(app.Listen(fmt.Sprintf(":%v", port)))
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue