diff options
Diffstat (limited to 'controllers')
| -rw-r--r-- | controllers/anime.go | 40 |
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) +} |
