From 8aaa7898b3b5eb66165cda9a510b0f486294226f Mon Sep 17 00:00:00 2001 From: Eduard Urbach Date: Fri, 9 Mar 2018 16:27:40 +0100 Subject: [PATCH] Anime relations patch --- jobs/sync-anime/sync-anime.go | 20 ++++++++++++--- pages/editanime/editanime.go | 24 ++++++++++++++++++ pages/editanime/editanime.pixy | 8 +++--- pages/index.go | 2 +- .../add-anime-relations.go | 25 +++++++++++++++++++ 5 files changed, 71 insertions(+), 8 deletions(-) create mode 100644 patches/add-anime-relations/add-anime-relations.go diff --git a/jobs/sync-anime/sync-anime.go b/jobs/sync-anime/sync-anime.go index dbfdde32..b4dcbb5a 100644 --- a/jobs/sync-anime/sync-anime.go +++ b/jobs/sync-anime/sync-anime.go @@ -30,12 +30,12 @@ func main() { } } -func sync(data *kitsu.Anime) { +func sync(data *kitsu.Anime) *arn.Anime { anime, err := arn.GetAnime(data.ID) // This stops overwriting existing data - if err == nil || anime != nil { - return + if anime != nil { + return anime } if err != nil { @@ -153,6 +153,20 @@ func sync(data *kitsu.Anime) { arn.DB.Set("AnimeEpisodes", anime.ID, episodes) } + // Relations + relations, _ := arn.GetAnimeRelations(anime.ID) + + if relations == nil { + relations := &arn.AnimeRelations{ + AnimeID: anime.ID, + Items: []*arn.AnimeRelation{}, + } + + arn.DB.Set("AnimeRelations", anime.ID, relations) + } + // Log fmt.Println(color.GreenString("✔"), anime.ID, anime.Title.Canonical) + + return anime } diff --git a/pages/editanime/editanime.go b/pages/editanime/editanime.go index d44cc37a..1ad9b17a 100644 --- a/pages/editanime/editanime.go +++ b/pages/editanime/editanime.go @@ -75,3 +75,27 @@ func Relations(ctx *aero.Context) string { return ctx.HTML(components.EditAnimeTabs(anime) + editform.Render(animeRelations, "Edit anime relations", user)) } + +// Episodes anime episodes edit page. +func Episodes(ctx *aero.Context) string { + id := ctx.Get("id") + user := utils.GetUser(ctx) + + if user == nil || (user.Role != "editor" && user.Role != "admin") { + return ctx.Error(http.StatusUnauthorized, "Not logged in or not auhorized to edit", nil) + } + + anime, err := arn.GetAnime(id) + + if err != nil { + return ctx.Error(http.StatusNotFound, "Anime not found", err) + } + + animeEpisodes, err := arn.GetAnimeEpisodes(id) + + if err != nil { + return ctx.Error(http.StatusNotFound, "Anime episodes not found", err) + } + + return ctx.HTML(components.EditAnimeTabs(anime) + editform.Render(animeEpisodes, "Edit anime episodes", user)) +} diff --git a/pages/editanime/editanime.pixy b/pages/editanime/editanime.pixy index 5edc8b4b..e3083ad8 100644 --- a/pages/editanime/editanime.pixy +++ b/pages/editanime/editanime.pixy @@ -4,7 +4,7 @@ component EditAnimeTabs(anime *arn.Anime) Icon("tv") span Anime - Tab("Edit anime", "pencil", anime.Link() + "/edit") - Tab("Edit characters", "pencil", anime.Link() + "/edit/characters") - Tab("Edit relations", "pencil", anime.Link() + "/edit/relations") - //- Tab("Edit episodes", "pencil", anime.Link() + "/edit/episodes") \ No newline at end of file + Tab("Edit", "pencil", anime.Link() + "/edit") + Tab("Characters", "pencil", anime.Link() + "/edit/characters") + Tab("Relations", "pencil", anime.Link() + "/edit/relations") + Tab("Episodes", "pencil", anime.Link() + "/edit/episodes") \ No newline at end of file diff --git a/pages/index.go b/pages/index.go index 606dee15..71e7a277 100644 --- a/pages/index.go +++ b/pages/index.go @@ -106,7 +106,7 @@ func Configure(app *aero.Application) { l.Page("/anime/:id/edit", editanime.Main) l.Page("/anime/:id/edit/characters", editanime.Characters) l.Page("/anime/:id/edit/relations", editanime.Relations) - // l.Page("/anime/:id/edit/episodes", editanime.Episodes) + l.Page("/anime/:id/edit/episodes", editanime.Episodes) // Characters l.Page("/character/:id", character.Get) diff --git a/patches/add-anime-relations/add-anime-relations.go b/patches/add-anime-relations/add-anime-relations.go new file mode 100644 index 00000000..32203f58 --- /dev/null +++ b/patches/add-anime-relations/add-anime-relations.go @@ -0,0 +1,25 @@ +package main + +import ( + "fmt" + + "github.com/animenotifier/arn" +) + +func main() { + defer arn.Node.Close() + + for anime := range arn.StreamAnime() { + relations, _ := arn.GetAnimeRelations(anime.ID) + + if relations == nil { + relations := &arn.AnimeRelations{ + AnimeID: anime.ID, + Items: []*arn.AnimeRelation{}, + } + + arn.DB.Set("AnimeRelations", anime.ID, relations) + fmt.Println(anime.ID, anime.Title.Canonical) + } + } +}