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
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							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
							 | 
						|
								}
							 |