2020-06-02 15:45:21 +00:00
|
|
|
package resolvers
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
2021-05-05 17:32:45 +00:00
|
|
|
"github.com/Kichiyaki/goutil/safeptr"
|
|
|
|
"github.com/tribalwarshelp/shared/tw/twmodel"
|
2020-06-02 15:45:21 +00:00
|
|
|
|
|
|
|
"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
|
|
|
)
|
|
|
|
|
2021-05-05 17:32:45 +00:00
|
|
|
func (r *playerResolver) Tribe(ctx context.Context, obj *twmodel.Player) (*twmodel.Tribe, error) {
|
2020-06-02 15:45:21 +00:00
|
|
|
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
|
|
|
}
|
|
|
|
|
2021-05-05 17:32:45 +00:00
|
|
|
func (r *playerResolver) Servers(ctx context.Context, obj *twmodel.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)
|
2021-05-05 17:32:45 +00:00
|
|
|
if loaders, ok := versionDataLoaders[twmodel.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
|
|
|
|
}
|
|
|
|
|
2021-05-05 17:32:45 +00:00
|
|
|
func (r *playerResolver) NameChanges(ctx context.Context, obj *twmodel.Player) ([]*twmodel.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)
|
2021-05-05 17:32:45 +00:00
|
|
|
if loaders, ok := versionDataLoaders[twmodel.VersionCodeFromServerKey(serverKey)]; ok {
|
2020-06-24 14:40:29 +00:00
|
|
|
servers, err := loaders.PlayerNameChangesByID.Load(obj.ID)
|
|
|
|
if err == nil {
|
|
|
|
return servers, nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2021-05-05 17:32:45 +00:00
|
|
|
return []*twmodel.PlayerNameChange{}, nil
|
2020-06-24 14:40:29 +00:00
|
|
|
}
|
|
|
|
|
2020-11-21 09:08:22 +00:00
|
|
|
func (r *queryResolver) Players(ctx context.Context,
|
|
|
|
server string,
|
2021-05-05 17:32:45 +00:00
|
|
|
f *twmodel.PlayerFilter,
|
2020-11-21 09:08:22 +00:00
|
|
|
limit *int,
|
|
|
|
offset *int,
|
|
|
|
sort []string) (*generated.PlayerList, error) {
|
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,
|
2021-05-05 17:32:45 +00:00
|
|
|
Limit: safeptr.SafeIntPointer(limit, 0),
|
|
|
|
Offset: safeptr.SafeIntPointer(offset, 0),
|
2020-12-25 11:13:12 +00:00
|
|
|
Count: shouldCount(ctx),
|
2021-03-21 12:03:39 +00:00
|
|
|
Select: shouldSelectItems(ctx),
|
2020-11-21 09:08:22 +00:00
|
|
|
})
|
2020-06-02 15:45:21 +00:00
|
|
|
return list, err
|
|
|
|
}
|
|
|
|
|
2021-05-05 17:32:45 +00:00
|
|
|
func (r *queryResolver) Player(ctx context.Context, server string, id int) (*twmodel.Player, error) {
|
2020-06-02 15:45:21 +00:00
|
|
|
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,
|
2021-05-05 17:32:45 +00:00
|
|
|
Limit: safeptr.SafeIntPointer(limit, 0),
|
|
|
|
Offset: safeptr.SafeIntPointer(offset, 0),
|
2020-12-25 11:07:54 +00:00
|
|
|
Version: version,
|
2021-05-05 17:32:45 +00:00
|
|
|
Name: safeptr.SafeStringPointer(name, ""),
|
|
|
|
ID: safeptr.SafeIntPointer(id, 0),
|
2020-12-25 11:07:54 +00:00
|
|
|
Count: shouldCount(ctx),
|
|
|
|
})
|
|
|
|
return list, err
|
|
|
|
}
|