2020-06-02 15:45:21 +00:00
|
|
|
package resolvers
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
|
|
|
|
"github.com/tribalwarshelp/api/graphql/generated"
|
2020-06-23 09:40:48 +00:00
|
|
|
"github.com/tribalwarshelp/api/middleware"
|
2020-11-21 09:08:22 +00:00
|
|
|
"github.com/tribalwarshelp/api/player"
|
2020-06-02 15:45:21 +00:00
|
|
|
"github.com/tribalwarshelp/shared/models"
|
2020-10-31 11:33:01 +00:00
|
|
|
"github.com/tribalwarshelp/shared/tw"
|
2020-06-02 15:45:21 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
func (r *playerResolver) Tribe(ctx context.Context, obj *models.Player) (*models.Tribe, error) {
|
|
|
|
if obj.Tribe != nil {
|
|
|
|
return obj.Tribe, nil
|
|
|
|
}
|
|
|
|
|
2020-06-21 10:26:57 +00:00
|
|
|
return getTribe(ctx, obj.TribeID), nil
|
2020-06-02 15:45:21 +00:00
|
|
|
}
|
|
|
|
|
2020-06-23 09:40:48 +00:00
|
|
|
func (r *playerResolver) Servers(ctx context.Context, obj *models.Player) ([]string, error) {
|
2020-11-06 19:23:12 +00:00
|
|
|
versionDataLoaders := middleware.VersionDataLoadersFromContext(ctx)
|
|
|
|
if versionDataLoaders != nil {
|
2020-06-24 13:05:31 +00:00
|
|
|
serverKey, _ := getServer(ctx)
|
2020-11-06 19:23:12 +00:00
|
|
|
if loaders, ok := versionDataLoaders[tw.VersionCodeFromServerKey(serverKey)]; ok {
|
2020-06-24 13:05:31 +00:00
|
|
|
servers, err := loaders.PlayerServersByID.Load(obj.ID)
|
|
|
|
if err == nil {
|
|
|
|
return servers, nil
|
|
|
|
}
|
2020-06-23 09:40:48 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
return []string{}, nil
|
|
|
|
}
|
|
|
|
|
2020-06-24 14:40:29 +00:00
|
|
|
func (r *playerResolver) NameChanges(ctx context.Context, obj *models.Player) ([]*models.PlayerNameChange, error) {
|
2020-11-06 19:23:12 +00:00
|
|
|
versionDataLoaders := middleware.VersionDataLoadersFromContext(ctx)
|
|
|
|
if versionDataLoaders != nil {
|
2020-06-24 14:40:29 +00:00
|
|
|
serverKey, _ := getServer(ctx)
|
2020-11-06 19:23:12 +00:00
|
|
|
if loaders, ok := versionDataLoaders[tw.VersionCodeFromServerKey(serverKey)]; ok {
|
2020-06-24 14:40:29 +00:00
|
|
|
servers, err := loaders.PlayerNameChangesByID.Load(obj.ID)
|
|
|
|
if err == nil {
|
|
|
|
return servers, nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return []*models.PlayerNameChange{}, nil
|
|
|
|
}
|
|
|
|
|
2020-11-21 09:08:22 +00:00
|
|
|
func (r *queryResolver) Players(ctx context.Context,
|
|
|
|
server string,
|
|
|
|
f *models.PlayerFilter,
|
|
|
|
limit *int,
|
|
|
|
offset *int,
|
|
|
|
sort []string) (*generated.PlayerList, error) {
|
|
|
|
defLimit := 0
|
|
|
|
defOffset := 0
|
|
|
|
if limit == nil {
|
|
|
|
limit = &defLimit
|
|
|
|
}
|
|
|
|
if offset == nil {
|
|
|
|
offset = &defOffset
|
|
|
|
}
|
|
|
|
|
2020-06-02 15:45:21 +00:00
|
|
|
var err error
|
2020-06-28 11:55:37 +00:00
|
|
|
list := &generated.PlayerList{}
|
2020-11-21 09:08:22 +00:00
|
|
|
list.Items, list.Total, err = r.PlayerUcase.Fetch(ctx, player.FetchConfig{
|
|
|
|
Server: server,
|
|
|
|
Filter: f,
|
|
|
|
Sort: sort,
|
|
|
|
Limit: *limit,
|
|
|
|
Offset: *offset,
|
|
|
|
Count: true,
|
|
|
|
})
|
2020-06-02 15:45:21 +00:00
|
|
|
return list, err
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *queryResolver) Player(ctx context.Context, server string, id int) (*models.Player, error) {
|
|
|
|
return r.PlayerUcase.GetByID(ctx, server, id)
|
|
|
|
}
|
2020-12-25 11:07:54 +00:00
|
|
|
|
|
|
|
func (r *queryResolver) SearchPlayer(ctx context.Context,
|
|
|
|
version string,
|
|
|
|
name *string,
|
|
|
|
id *int,
|
|
|
|
limit *int,
|
|
|
|
offset *int,
|
|
|
|
sort []string) (*generated.FoundPlayerList, error) {
|
|
|
|
var err error
|
|
|
|
list := &generated.FoundPlayerList{}
|
|
|
|
list.Items, list.Total, err = r.PlayerUcase.SearchPlayer(ctx, player.SearchPlayerConfig{
|
|
|
|
Sort: sort,
|
|
|
|
Limit: safeIntPointer(limit, 0),
|
|
|
|
Offset: safeIntPointer(offset, 0),
|
|
|
|
Version: version,
|
|
|
|
Name: safeStrPointer(name, ""),
|
|
|
|
ID: safeIntPointer(id, 0),
|
|
|
|
Count: shouldCount(ctx),
|
|
|
|
})
|
|
|
|
return list, err
|
|
|
|
}
|