GraphQL API and utilities for the rpdata project
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

71 lines
1.9 KiB

package resolvers
import (
"context"
"time"
"git.aiterp.net/rpdata/api/graph2/graphcore"
"git.aiterp.net/rpdata/api/models"
)
// Queries
func (r *queryResolver) Chapter(ctx context.Context, id string) (*models.Chapter, error) {
return r.s.Stories.FindChapter(ctx, id)
}
// Mutations
func (r *mutationResolver) AddChapter(ctx context.Context, input graphcore.ChapterAddInput) (*models.Chapter, error) {
story, err := r.s.Stories.FindStory(ctx, input.StoryID)
if err != nil {
return nil, err
}
commentMode := models.ChapterCommentModeDisabled
if input.CommentMode != nil {
commentMode = *input.CommentMode
}
return r.s.Stories.CreateChapter(ctx, *story, input.Title, input.Source, input.Author, time.Now(), input.FictionalDate, commentMode)
}
func (r *mutationResolver) MoveChapter(ctx context.Context, input graphcore.ChapterMoveInput) (*models.Chapter, error) {
chapter, err := r.s.Stories.FindChapter(ctx, input.ID)
if err != nil {
return nil, err
}
from, err := r.s.Stories.FindStory(ctx, chapter.StoryID)
if err != nil {
return nil, err
}
to, err := r.s.Stories.FindStory(ctx, input.StoryID)
if err != nil {
return nil, err
}
return r.s.Stories.MoveChapter(ctx, chapter, *from, *to)
}
func (r *mutationResolver) EditChapter(ctx context.Context, input graphcore.ChapterEditInput) (*models.Chapter, error) {
chapter, err := r.s.Stories.FindChapter(ctx, input.ID)
if err != nil {
return nil, err
}
return r.s.Stories.EditChapter(ctx, chapter, input.Title, input.Source, input.FictionalDate, input.CommentMode, input.CommentsLocked)
}
func (r *mutationResolver) RemoveChapter(ctx context.Context, input graphcore.ChapterRemoveInput) (*models.Chapter, error) {
chapter, err := r.s.Stories.FindChapter(ctx, input.ID)
if err != nil {
return nil, err
}
err = r.s.Stories.RemoveChapter(ctx, chapter)
if err != nil {
return nil, err
}
return chapter, nil
}