diff options
| author | Bobby <[email protected]> | 2026-02-24 17:36:55 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2026-02-24 17:36:55 +0530 |
| commit | 2df69fab61b580b6b329db214ee0025a9d84958d (patch) | |
| tree | bf7d69e1cfc5f6dc3e387f99325e6842e7dc60c1 /controllers | |
| parent | d3507ae5b9d88a250b444c0e996fa07f84f6e3c5 (diff) | |
| download | metachan-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.go | 39 |
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) } |
