64 lines
1.5 KiB
Go
64 lines
1.5 KiB
Go
package controllers
|
|
|
|
import (
|
|
"cds/dao"
|
|
"cds/models"
|
|
"fmt"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
"go.mongodb.org/mongo-driver/mongo"
|
|
)
|
|
|
|
// @Summary Renvoie les informations sur un jeu.
|
|
// @Produce json
|
|
// @Success 200 {object} models.Game
|
|
// @Failure 403
|
|
// @Failure 404
|
|
// @Failure 500
|
|
// @Router /games/{id} [get]
|
|
func GetGameById(c *fiber.Ctx) error {
|
|
token := c.Cookies("token", "")
|
|
if token == "" {
|
|
return c.SendStatus(fiber.StatusForbidden)
|
|
} else {
|
|
id := c.Params("id")
|
|
game, err := dao.GetGameById(id)
|
|
if err == mongo.ErrNoDocuments {
|
|
return c.SendStatus(fiber.StatusNotFound)
|
|
} else if err != nil {
|
|
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
|
|
"error": fmt.Sprint(err),
|
|
})
|
|
} else {
|
|
return c.Status(fiber.StatusOK).JSON(game)
|
|
}
|
|
}
|
|
}
|
|
|
|
// @Summary Renvoie une liste de 10 jeux dont le nom contient la requête.
|
|
// @Produce json
|
|
// @Success 200 {object} List models.Game
|
|
// @Failure 403
|
|
// @Failure 500
|
|
// @Router /games/search?name={name} [get]
|
|
func FindGame(c *fiber.Ctx) error {
|
|
token := c.Cookies("token", "")
|
|
if token == "" {
|
|
return c.SendStatus(fiber.StatusForbidden)
|
|
} else {
|
|
name := c.Query("name", "")
|
|
games, err := dao.SearchSimilarNames(name)
|
|
if err != nil {
|
|
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
|
|
"error": fmt.Sprint(err),
|
|
})
|
|
} else {
|
|
res := []models.Game{}
|
|
for e := games.Front(); e != nil; e = e.Next() {
|
|
res = append(res, e.Value.(models.Game))
|
|
}
|
|
|
|
return c.Status(fiber.StatusOK).JSON(res)
|
|
}
|
|
}
|
|
}
|