aboutsummaryrefslogtreecommitdiff
path: root/controllers
diff options
context:
space:
mode:
authorBobby <[email protected]>2026-02-24 17:36:55 +0530
committerBobby <[email protected]>2026-02-24 17:36:55 +0530
commit2df69fab61b580b6b329db214ee0025a9d84958d (patch)
treebf7d69e1cfc5f6dc3e387f99325e6842e7dc60c1 /controllers
parentd3507ae5b9d88a250b444c0e996fa07f84f6e3c5 (diff)
downloadmetachan-2df69fab61b580b6b329db214ee0025a9d84958d.tar.xz
metachan-2df69fab61b580b6b329db214ee0025a9d84958d.zip
feat: Enhance person handling and synchronization logic
- Introduced new Person entity with detailed attributes - Updated repositories and controllers to support person data retrieval - Implemented PersonSync task for background enrichment of person data - Refactored existing character and voice actor logic to utilize Person entity - Added Jikan API integration for fetching person details
Diffstat (limited to 'controllers')
-rw-r--r--controllers/persona.go39
1 files changed, 34 insertions, 5 deletions
diff --git a/controllers/persona.go b/controllers/persona.go
index d90157d..4beef53 100644
--- a/controllers/persona.go
+++ b/controllers/persona.go
@@ -29,11 +29,26 @@ func GetAnimeCharacters(c *fiber.Ctx) error {
}
func GetAnimeCharacter(c *fiber.Ctx) error {
- id := meta.Request(c).MustHave().Param("id")
characterID, ok := meta.Request(c).Param("characterId")
if !ok {
return BadRequest(c, errors.New("characterId is required"))
}
+
+ malID, err := strconv.Atoi(characterID)
+ if err != nil {
+ return BadRequest(c, errors.New("characterId must be a numeric MAL ID"))
+ }
+
+ character, err := repositories.GetCharacterByMALID(malID)
+ if err != nil {
+ return NotFound(c, err)
+ }
+
+ return c.JSON(character)
+}
+
+func GetAnimePeople(c *fiber.Ctx) error {
+ id := meta.Request(c).MustHave().Param("id")
provider := meta.Request(c).Default("mal").Query("provider")
switch provider {
@@ -42,15 +57,29 @@ func GetAnimeCharacter(c *fiber.Ctx) error {
return BadRequest(c, errors.New("invalid provider"))
}
- malID, err := strconv.Atoi(characterID)
+ people, err := repositories.GetAnimePeople(enums.MappingType(provider), id)
if err != nil {
- return BadRequest(c, errors.New("characterId must be a numeric MAL ID"))
+ return NotFound(c, err)
}
- character, err := repositories.GetAnimeCharacter(enums.MappingType(provider), id, malID)
+ return c.JSON(people)
+}
+
+func GetPerson(c *fiber.Ctx) error {
+ personID, ok := meta.Request(c).Param("personId")
+ if !ok {
+ return BadRequest(c, errors.New("personId is required"))
+ }
+
+ malID, err := strconv.Atoi(personID)
+ if err != nil {
+ return BadRequest(c, errors.New("personId must be a numeric MAL ID"))
+ }
+
+ person, err := repositories.GetPerson(malID)
if err != nil {
return NotFound(c, err)
}
- return c.JSON(character)
+ return c.JSON(person)
}