@@ -26,6 +26,10 @@ func One(object interface{}) models.ChangeKey {
|
||||
|
||||
id := ""
|
||||
v := reflect.ValueOf(object)
|
||||
for v.Kind() == reflect.Ptr {
|
||||
v = v.Elem()
|
||||
}
|
||||
|
||||
if f := v.FieldByName("ID"); f.Kind() == reflect.String {
|
||||
id = f.String()
|
||||
} else if f = v.FieldByName("Name"); f.Kind() == reflect.String {
|
||||
|
||||
@@ -55,34 +55,50 @@ func Submit(model, op, author string, listed bool, keys []models.ChangeKey, obje
|
||||
switch object := object.(type) {
|
||||
case models.Log:
|
||||
change.Logs = append(change.Logs, object)
|
||||
case *models.Log:
|
||||
change.Logs = append(change.Logs, *object)
|
||||
case []models.Log:
|
||||
change.Logs = append(change.Logs, object...)
|
||||
case models.Character:
|
||||
change.Characters = append(change.Characters, object)
|
||||
case *models.Character:
|
||||
change.Characters = append(change.Characters, *object)
|
||||
case []models.Character:
|
||||
change.Characters = append(change.Characters, object...)
|
||||
case models.Channel:
|
||||
change.Channels = append(change.Channels, object)
|
||||
case *models.Channel:
|
||||
change.Channels = append(change.Channels, *object)
|
||||
case []models.Channel:
|
||||
change.Channels = append(change.Channels, object...)
|
||||
case models.Post:
|
||||
change.Posts = append(change.Posts, object)
|
||||
case *models.Post:
|
||||
change.Posts = append(change.Posts, *object)
|
||||
case []models.Post:
|
||||
change.Posts = append(change.Posts, object...)
|
||||
case models.Story:
|
||||
change.Stories = append(change.Stories, object)
|
||||
case *models.Story:
|
||||
change.Stories = append(change.Stories, *object)
|
||||
case []models.Story:
|
||||
change.Stories = append(change.Stories, object...)
|
||||
case models.Tag:
|
||||
change.Tags = append(change.Tags, object)
|
||||
case *models.Tag:
|
||||
change.Tags = append(change.Tags, *object)
|
||||
case []models.Tag:
|
||||
change.Tags = append(change.Tags, object...)
|
||||
case models.Chapter:
|
||||
change.Chapters = append(change.Chapters, object)
|
||||
case *models.Chapter:
|
||||
change.Chapters = append(change.Chapters, *object)
|
||||
case []models.Chapter:
|
||||
change.Chapters = append(change.Chapters, object...)
|
||||
case models.Comment:
|
||||
change.Comments = append(change.Comments, object)
|
||||
case *models.Comment:
|
||||
change.Comments = append(change.Comments, *object)
|
||||
case []models.Comment:
|
||||
change.Comments = append(change.Comments, object...)
|
||||
default:
|
||||
|
||||
+18
-1
@@ -34,4 +34,21 @@ func (character *Character) HasNick(nick string) bool {
|
||||
// ChangeObject in GQL.
|
||||
func (*Character) IsChangeObject() {
|
||||
panic("this method is a dummy, and so is its caller")
|
||||
}
|
||||
}
|
||||
|
||||
// CharacterFilter is a filter for character listing.
|
||||
type CharacterFilter struct {
|
||||
IDs []string
|
||||
Nicks []string
|
||||
Names []string
|
||||
Author *string
|
||||
Search *string
|
||||
Limit int
|
||||
}
|
||||
|
||||
// CharacterUpdate is an update for characters.
|
||||
type CharacterUpdate struct {
|
||||
Name *string
|
||||
ShortName *string
|
||||
Description *string
|
||||
}
|
||||
|
||||
+1
-1
@@ -63,7 +63,7 @@ func (e TagKind) MarshalGQL(w io.Writer) {
|
||||
fmt.Fprint(w, "\""+string(e), "\"")
|
||||
}
|
||||
|
||||
// TagFilter is a filter of tags.
|
||||
// TagFilter is a filter for tag listing.
|
||||
type TagFilter struct {
|
||||
Kind *TagKind `bson:"kind,omitempty"`
|
||||
}
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
package tags
|
||||
|
||||
import (
|
||||
"git.aiterp.net/rpdata/api/internal/store"
|
||||
"github.com/globalsign/mgo"
|
||||
)
|
||||
|
||||
var storyCollection *mgo.Collection
|
||||
|
||||
func init() {
|
||||
store.HandleInit(func(db *mgo.Database) {
|
||||
storyCollection = db.C("story.stories")
|
||||
})
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
package tags
|
||||
|
||||
import (
|
||||
"sort"
|
||||
"strings"
|
||||
|
||||
"git.aiterp.net/rpdata/api/models"
|
||||
"github.com/globalsign/mgo/bson"
|
||||
)
|
||||
|
||||
// List lists all tags
|
||||
func List() ([]models.Tag, error) {
|
||||
tags := make([]models.Tag, 0, 64)
|
||||
err := storyCollection.Find(bson.M{"listed": true, "tags": bson.M{"$ne": nil}}).Distinct("tags", &tags)
|
||||
|
||||
sort.Slice(tags, func(i, j int) bool {
|
||||
kindCmp := strings.Compare(string(tags[i].Kind), string(tags[j].Kind))
|
||||
if kindCmp != 0 {
|
||||
return kindCmp < 0
|
||||
}
|
||||
|
||||
return strings.Compare(tags[i].Name, tags[j].Name) < 0
|
||||
})
|
||||
|
||||
return tags, err
|
||||
}
|
||||
Reference in New Issue
Block a user