10 changed files with 201 additions and 0 deletions
			
			
		- 
					4graph2/graph.go
- 
					61graph2/queries/chapter.go
- 
					4graph2/queries/resolver.go
- 
					12graph2/schema/root.gql
- 
					6graph2/schema/types/Chapter.gql
- 
					1internal/auth/permissions.go
- 
					38models/chapters/add.go
- 
					25models/chapters/db.go
- 
					38models/chapters/edit.go
- 
					12models/chapters/remove.go
| @ -1,6 +1,10 @@ | |||
| package queries | |||
| 
 | |||
| type resolver struct{} | |||
| type mutationResolver struct{} | |||
| 
 | |||
| // Resolver has all the queries
 | |||
| var Resolver resolver | |||
| 
 | |||
| // MutationResolver brings the mutagens.
 | |||
| var MutationResolver *mutationResolver | |||
| @ -0,0 +1,38 @@ | |||
| package chapters | |||
| 
 | |||
| import ( | |||
| 	"time" | |||
| 
 | |||
| 	"git.aiterp.net/rpdata/api/models" | |||
| 	"github.com/globalsign/mgo/bson" | |||
| ) | |||
| 
 | |||
| // Add adds a new chapter.
 | |||
| func Add(story models.Story, title, author, source string, createdDate time.Time, finctionalDate *time.Time) (models.Chapter, error) { | |||
| 	chapter := models.Chapter{ | |||
| 		ID:          makeChapterID(), | |||
| 		StoryID:     story.ID, | |||
| 		Title:       title, | |||
| 		Author:      author, | |||
| 		Source:      source, | |||
| 		CreatedDate: createdDate, | |||
| 		EditedDate:  createdDate, | |||
| 	} | |||
| 
 | |||
| 	if finctionalDate != nil { | |||
| 		chapter.FictionalDate = *finctionalDate | |||
| 	} | |||
| 
 | |||
| 	err := collection.Insert(chapter) | |||
| 	if err != nil { | |||
| 		return models.Chapter{}, err | |||
| 	} | |||
| 
 | |||
| 	if createdDate.After(story.UpdatedDate) { | |||
| 		if err := storyCollection.UpdateId(story.ID, bson.M{"$set": bson.M{"updatedDate": createdDate}}); err == nil { | |||
| 			story.UpdatedDate = createdDate | |||
| 		} | |||
| 	} | |||
| 
 | |||
| 	return chapter, nil | |||
| } | |||
| @ -0,0 +1,38 @@ | |||
| package chapters | |||
| 
 | |||
| import ( | |||
| 	"time" | |||
| 
 | |||
| 	"git.aiterp.net/rpdata/api/models" | |||
| 	"github.com/globalsign/mgo/bson" | |||
| ) | |||
| 
 | |||
| // Edit edits a chapter, and updates EditedDate. While many Edit functions cheat if there's nothing to
 | |||
| // change, this functill will due to EditedDate.
 | |||
| func Edit(chapter models.Chapter, title, source *string, fictionalDate *time.Time) (models.Chapter, error) { | |||
| 	now := time.Now() | |||
| 	changes := bson.M{"editedDate": now} | |||
| 
 | |||
| 	edited := chapter | |||
| 	edited.EditedDate = now | |||
| 
 | |||
| 	if title != nil && *title != chapter.Title { | |||
| 		changes["title"] = *title | |||
| 		edited.Title = *title | |||
| 	} | |||
| 	if source != nil && *source != chapter.Source { | |||
| 		changes["source"] = *source | |||
| 		edited.Source = *source | |||
| 	} | |||
| 	if fictionalDate != nil && !fictionalDate.Equal(chapter.FictionalDate) { | |||
| 		changes["fictionalDate"] = *fictionalDate | |||
| 		edited.FictionalDate = *fictionalDate | |||
| 	} | |||
| 
 | |||
| 	err := collection.UpdateId(chapter.ID, bson.M{"$set": changes}) | |||
| 	if err != nil { | |||
| 		return chapter, err | |||
| 	} | |||
| 
 | |||
| 	return edited, nil | |||
| } | |||
| @ -0,0 +1,12 @@ | |||
| package chapters | |||
| 
 | |||
| import "git.aiterp.net/rpdata/api/models" | |||
| 
 | |||
| // Remove removes a chapter.
 | |||
| func Remove(chapter models.Chapter) (models.Chapter, error) { | |||
| 	if err := collection.RemoveId(chapter.ID); err != nil { | |||
| 		return models.Chapter{}, err | |||
| 	} | |||
| 
 | |||
| 	return chapter, nil | |||
| } | |||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue