Moved server packages to a separate folder
This commit is contained in:
79
server/graphql/graphql.go
Normal file
79
server/graphql/graphql.go
Normal file
@ -0,0 +1,79 @@
|
||||
package graphql
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/aerogo/aero"
|
||||
"github.com/aerogo/graphql"
|
||||
"github.com/animenotifier/notify.moe/arn"
|
||||
)
|
||||
|
||||
func Install(app *aero.Application) {
|
||||
api := graphql.New(arn.DB)
|
||||
|
||||
// Block private collections
|
||||
api.AddRootResolver(func(name string, arguments graphql.Map) (interface{}, error, bool) {
|
||||
typeName := strings.TrimPrefix(name, "all")
|
||||
typeName = strings.TrimPrefix(typeName, "like")
|
||||
|
||||
if arn.IsPrivateType(typeName) {
|
||||
return nil, fmt.Errorf("Type '%s' is private", typeName), true
|
||||
}
|
||||
|
||||
return nil, nil, false
|
||||
})
|
||||
|
||||
// Like objects
|
||||
// api.AddRootResolver(func(name string, arguments graphql.Map) (interface{}, error, bool) {
|
||||
// if !strings.HasPrefix(name, "like") {
|
||||
// return nil, nil, false
|
||||
// }
|
||||
|
||||
// id, ok := arguments["ID"].(string)
|
||||
|
||||
// if !ok {
|
||||
// return nil, fmt.Errorf("'%s' needs to specify an ID", name), true
|
||||
// }
|
||||
|
||||
// typeName := strings.TrimPrefix(name, "like")
|
||||
// obj, err := arn.DB.Get(typeName, id)
|
||||
|
||||
// if err != nil {
|
||||
// return nil, err, true
|
||||
// }
|
||||
|
||||
// field := reflect.ValueOf(obj).Elem().FieldByName("IsDraft")
|
||||
|
||||
// if field.IsValid() && field.Bool() {
|
||||
// return nil, errors.New("Drafts need to be published before they can be liked"), true
|
||||
// }
|
||||
|
||||
// likeable, ok := obj.(arn.Likeable)
|
||||
|
||||
// if !ok {
|
||||
// return nil, fmt.Errorf("'%s' does not implement the Likeable interface", name), true
|
||||
// }
|
||||
|
||||
// // TODO: Authentication
|
||||
// // user := GetUserFromContext(ctx)
|
||||
|
||||
// // if user == nil {
|
||||
// // return errors.New("Not logged in")
|
||||
// // }
|
||||
|
||||
// // likeable.Like(user.ID)
|
||||
|
||||
// // Call OnLike if the object implements it
|
||||
// // receiver, ok := likeable.(LikeEventReceiver)
|
||||
|
||||
// // if ok {
|
||||
// // receiver.OnLike(user)
|
||||
// // }
|
||||
|
||||
// likeable.Save()
|
||||
// return obj, nil, true
|
||||
// })
|
||||
|
||||
app.Post("/graphql", api.Handler())
|
||||
}
|
Reference in New Issue
Block a user