Finished refactor of story/chapter/comment related stuff.
the build was successful

This commit is contained in:
2019-08-25 16:10:10 +02:00
parent 8c4670580c
commit 2eed815993
22 changed files with 737 additions and 502 deletions
+11 -26
View File
@@ -2,14 +2,15 @@ package types
import (
"context"
"errors"
"git.aiterp.net/rpdata/api/services"
"time"
"git.aiterp.net/rpdata/api/models"
"git.aiterp.net/rpdata/api/models/comments"
)
type chapterResolver struct{}
type chapterResolver struct {
stories *services.StoryService
}
func (r *chapterResolver) FictionalDate(ctx context.Context, chapter *models.Chapter) (*time.Time, error) {
if chapter.FictionalDate.IsZero() {
@@ -20,31 +21,15 @@ func (r *chapterResolver) FictionalDate(ctx context.Context, chapter *models.Cha
}
func (r *chapterResolver) Comments(ctx context.Context, chapter *models.Chapter, limit *int) ([]*models.Comment, error) {
limitValue := 0
if limit != nil {
if *limit < 0 {
return nil, errors.New("Limit cannot be negative")
}
limitValue = *limit
if limit == nil {
limit = new(int)
*limit = 0
}
if !chapter.CommentMode.IsEnabled() {
return nil, nil
}
comments, err := comments.ListChapterID(chapter.ID, limitValue)
if err != nil {
return nil, err
}
comments2 := make([]*models.Comment, len(comments))
for i := range comments {
comments2[i] = &comments[i]
}
return comments2, nil
return r.stories.ListComments(ctx, *chapter, *limit)
}
// ChapterResolver is a resolver
var ChapterResolver chapterResolver
func ChapterResolver(s *services.Bundle) *chapterResolver {
return &chapterResolver{stories: s.Stories}
}
+15 -11
View File
@@ -2,31 +2,33 @@ package types
import (
"context"
"errors"
"git.aiterp.net/rpdata/api/repositories"
"git.aiterp.net/rpdata/api/services"
"github.com/globalsign/mgo"
"time"
"git.aiterp.net/rpdata/api/internal/loader"
"git.aiterp.net/rpdata/api/models"
)
type commentResolver struct{}
type commentResolver struct {
characters *services.CharacterService
}
func (r *commentResolver) Character(ctx context.Context, obj *models.Comment) (*models.Character, error) {
if obj.CharacterID == "" {
return nil, nil
}
loader := loader.FromContext(ctx)
if loader == nil {
return nil, errors.New("no loader")
}
character, err := loader.Character("id", obj.CharacterID)
character, err := r.characters.Find(ctx, obj.CharacterID)
if err != nil {
if err == repositories.ErrNotFound || err == mgo.ErrNotFound {
return nil, nil
}
return nil, err
}
return &character, nil
return character, nil
}
func (r *commentResolver) FictionalDate(ctx context.Context, obj *models.Comment) (*time.Time, error) {
@@ -38,4 +40,6 @@ func (r *commentResolver) FictionalDate(ctx context.Context, obj *models.Comment
}
// CommentResolver is a resolver
var CommentResolver commentResolver
func CommentResolver(s *services.Bundle) *commentResolver {
return &commentResolver{characters: s.Characters}
}
+8 -15
View File
@@ -2,14 +2,15 @@ package types
import (
"context"
"git.aiterp.net/rpdata/api/services"
"time"
"git.aiterp.net/rpdata/api/models/chapters"
"git.aiterp.net/rpdata/api/models"
)
type storyResolver struct{}
type storyResolver struct {
stories *services.StoryService
}
func (r *storyResolver) FictionalDate(ctx context.Context, story *models.Story) (*time.Time, error) {
if story.FictionalDate.IsZero() {
@@ -20,18 +21,10 @@ func (r *storyResolver) FictionalDate(ctx context.Context, story *models.Story)
}
func (r *storyResolver) Chapters(ctx context.Context, story *models.Story) ([]*models.Chapter, error) {
chapters, err := chapters.ListStoryID(story.ID)
if err != nil {
return nil, err
}
chapters2 := make([]*models.Chapter, len(chapters))
for i := range chapters {
chapters2[i] = &chapters[i]
}
return chapters2, nil
return r.stories.ListChapters(ctx, *story)
}
// StoryResolver is a resolver
var StoryResolver storyResolver
func StoryResolver(s *services.Bundle) *storyResolver {
return &storyResolver{stories: s.Stories}
}