aboutsummaryrefslogtreecommitdiff
path: root/controllers
diff options
context:
space:
mode:
Diffstat (limited to 'controllers')
-rw-r--r--controllers/anime.go40
1 files changed, 40 insertions, 0 deletions
diff --git a/controllers/anime.go b/controllers/anime.go
new file mode 100644
index 0000000..67ffea1
--- /dev/null
+++ b/controllers/anime.go
@@ -0,0 +1,40 @@
+package controllers
+
+import (
+ "metachan/database"
+ "metachan/types"
+ "metachan/utils/anime"
+ "metachan/utils/logger"
+ "metachan/utils/mappers"
+
+ "github.com/gofiber/fiber/v2"
+)
+
+func GetAnimeByMALID(c *fiber.Ctx) error {
+ malID := c.Params("mal_id")
+ if malID == "" {
+ return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
+ "error": "Query parameter MAL ID is required",
+ })
+ }
+
+ mapping, err := database.GetAnimeMappingViaMALID(mappers.ForceInt(malID))
+ if err != nil {
+ return c.Status(fiber.StatusNotFound).JSON(fiber.Map{
+ "error": "Anime not found",
+ })
+ }
+
+ anime, err := anime.GetAnimeDetails(mapping)
+ if err != nil {
+ logger.Log("Failed to fetch anime details: "+err.Error(), types.LogOptions{
+ Level: types.Error,
+ Prefix: "AnimeAPI",
+ })
+ return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
+ "error": "Failed to fetch anime details",
+ })
+ }
+
+ return c.JSON(anime)
+}