48 lines
1.3 KiB
Go
48 lines
1.3 KiB
Go
package resolvers
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"github.com/tribalwarshelp/api/graphql/generated"
|
|
"github.com/tribalwarshelp/api/middleware"
|
|
"github.com/tribalwarshelp/api/utils"
|
|
"github.com/tribalwarshelp/shared/models"
|
|
)
|
|
|
|
func (r *playerResolver) Tribe(ctx context.Context, obj *models.Player) (*models.Tribe, error) {
|
|
if obj.Tribe != nil {
|
|
return obj.Tribe, nil
|
|
}
|
|
|
|
return getTribe(ctx, obj.TribeID), nil
|
|
}
|
|
|
|
func (r *playerResolver) Servers(ctx context.Context, obj *models.Player) ([]string, error) {
|
|
loaders := middleware.DataLoadersFromContext(ctx)
|
|
if loaders != nil {
|
|
servers, err := loaders.PlayerServersByID.Load(obj.ID)
|
|
if err == nil {
|
|
return servers, nil
|
|
}
|
|
}
|
|
return []string{}, nil
|
|
}
|
|
|
|
func (r *playerResolver) JoinedAt(ctx context.Context, obj *models.Player) (*time.Time, error) {
|
|
server, _ := getServer(ctx)
|
|
t := formatDate(ctx, utils.LanguageTagFromServerKey(server), obj.JoinedAt)
|
|
return &t, nil
|
|
}
|
|
|
|
func (r *queryResolver) Players(ctx context.Context, server string, filter *models.PlayerFilter) (*generated.PlayersList, error) {
|
|
var err error
|
|
list := &generated.PlayersList{}
|
|
list.Items, list.Total, err = r.PlayerUcase.Fetch(ctx, server, filter)
|
|
return list, err
|
|
}
|
|
|
|
func (r *queryResolver) Player(ctx context.Context, server string, id int) (*models.Player, error) {
|
|
return r.PlayerUcase.GetByID(ctx, server, id)
|
|
}
|