Browse Source
Moved LogResolver and PostResolver into resolvers/types package, updated references to it.
1.0
Moved LogResolver and PostResolver into resolvers/types package, updated references to it.
1.0
Gisle Aune
6 years ago
4 changed files with 187 additions and 171 deletions
@ -0,0 +1,117 @@ |
|||
package types |
|||
|
|||
import ( |
|||
"context" |
|||
"errors" |
|||
"time" |
|||
|
|||
"git.aiterp.net/rpdata/api/loader" |
|||
"git.aiterp.net/rpdata/api/model/log" |
|||
) |
|||
|
|||
// LogResolver for the Log graphql type
|
|||
type LogResolver struct{ L log.Log } |
|||
|
|||
// ID resolves Log.id
|
|||
func (r *LogResolver) ID() string { |
|||
return r.L.ID |
|||
} |
|||
|
|||
// ShortID resolves Log.shortId
|
|||
func (r *LogResolver) ShortID() string { |
|||
return r.L.ShortID |
|||
} |
|||
|
|||
// Date resolves Log.date
|
|||
func (r *LogResolver) Date() string { |
|||
return r.L.Date.Format(time.RFC3339Nano) |
|||
} |
|||
|
|||
// ChannelName resolves Log.channelName
|
|||
func (r *LogResolver) ChannelName() string { |
|||
return r.L.Channel |
|||
} |
|||
|
|||
// Channel resolves Log.channe
|
|||
func (r *LogResolver) Channel(ctx context.Context) (*ChannelResolver, error) { |
|||
loader := loader.FromContext(ctx) |
|||
if loader == nil { |
|||
return nil, errors.New("no loader") |
|||
} |
|||
|
|||
channel, err := loader.Channel("name", r.L.Channel) |
|||
if err != nil { |
|||
return nil, err |
|||
} |
|||
|
|||
return &ChannelResolver{C: channel}, nil |
|||
} |
|||
|
|||
// Title resolves Log.title
|
|||
func (r *LogResolver) Title() string { |
|||
return r.L.Title |
|||
} |
|||
|
|||
// Event resolves Log.event
|
|||
func (r *LogResolver) Event() string { |
|||
return r.L.Event |
|||
} |
|||
|
|||
// Description resolves Log.description
|
|||
func (r *LogResolver) Description() string { |
|||
return r.L.Description |
|||
} |
|||
|
|||
// Open resolves Log.open
|
|||
func (r *LogResolver) Open() bool { |
|||
return r.L.Open |
|||
} |
|||
|
|||
// Characters resolves Log.characters
|
|||
func (r *LogResolver) Characters(ctx context.Context) ([]*CharacterResolver, error) { |
|||
loader := loader.FromContext(ctx) |
|||
if loader == nil { |
|||
return nil, errors.New("no loader") |
|||
} |
|||
|
|||
chars, err := loader.Characters("id", r.L.CharacterIDs...) |
|||
if err != nil { |
|||
return nil, err |
|||
} |
|||
|
|||
resolvers := make([]*CharacterResolver, 0, len(chars)) |
|||
for i := range chars { |
|||
if chars[i].ID == "" { |
|||
continue |
|||
} |
|||
|
|||
resolvers = append(resolvers, &CharacterResolver{C: chars[i]}) |
|||
} |
|||
|
|||
return resolvers, nil |
|||
} |
|||
|
|||
// Posts resolves Log.posts
|
|||
func (r *LogResolver) Posts(ctx context.Context, args *LogPostArgs) ([]*PostResolver, error) { |
|||
var kinds []string |
|||
if args.Kinds != nil { |
|||
kinds = *args.Kinds |
|||
} |
|||
|
|||
posts, err := r.L.Posts(kinds...) |
|||
if err != nil { |
|||
return nil, err |
|||
} |
|||
|
|||
resolvers := make([]*PostResolver, len(posts)) |
|||
for i := range posts { |
|||
resolvers[i] = &PostResolver{posts[i]} |
|||
} |
|||
|
|||
return resolvers, nil |
|||
} |
|||
|
|||
// LogPostArgs is an arg
|
|||
type LogPostArgs struct { |
|||
Kinds *[]string |
|||
} |
@ -0,0 +1,45 @@ |
|||
package types |
|||
|
|||
import ( |
|||
"time" |
|||
|
|||
"git.aiterp.net/rpdata/api/model/log" |
|||
) |
|||
|
|||
// PostResolver for the Post graphql type
|
|||
type PostResolver struct{ P log.Post } |
|||
|
|||
// ID resolves Post.id
|
|||
func (r *PostResolver) ID() string { |
|||
return r.P.ID |
|||
} |
|||
|
|||
// LogID resolves Post.logId
|
|||
func (r *PostResolver) LogID() string { |
|||
return r.P.LogID |
|||
} |
|||
|
|||
// Time resolves Post.time
|
|||
func (r *PostResolver) Time() string { |
|||
return r.P.Time.Format(time.RFC3339Nano) |
|||
} |
|||
|
|||
// Kind resolves Post.logId
|
|||
func (r *PostResolver) Kind() string { |
|||
return r.P.Kind |
|||
} |
|||
|
|||
// Nick resolves Post.nick
|
|||
func (r *PostResolver) Nick() string { |
|||
return r.P.Nick |
|||
} |
|||
|
|||
// Text resolves Post.text
|
|||
func (r *PostResolver) Text() string { |
|||
return r.P.Text |
|||
} |
|||
|
|||
// Position resolves Post.text
|
|||
func (r *PostResolver) Position() int32 { |
|||
return int32(r.P.Position) |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue