This repository has been archived on 2022-09-04. You can view files and clone it, but cannot push or open issues or pull requests.
golang-sdk/sdk/server.go

110 lines
2.0 KiB
Go
Raw Normal View History

2020-06-07 15:04:57 +00:00
package sdk
import (
2020-06-18 15:48:23 +00:00
"fmt"
2021-05-02 14:07:54 +00:00
"github.com/tribalwarshelp/shared/tw/twmodel"
2020-06-18 15:48:23 +00:00
2020-06-07 15:04:57 +00:00
"github.com/Kichiyaki/gqlgen-client/client"
"github.com/pkg/errors"
)
type Server struct {
2020-06-07 15:04:57 +00:00
sdk *SDK
}
2020-06-18 15:48:23 +00:00
type ServerInclude struct {
Version bool
2020-06-18 15:48:23 +00:00
}
func (incl ServerInclude) String() string {
i := ""
if incl.Version {
2020-06-18 15:48:23 +00:00
i += fmt.Sprintf(`
version {
2020-06-18 15:48:23 +00:00
%s
}
`, versionFields)
2020-06-18 15:48:23 +00:00
}
return i
}
2021-05-02 14:07:54 +00:00
func (s *Server) Read(key string, incl *ServerInclude) (*twmodel.Server, error) {
2020-06-18 15:48:23 +00:00
if incl == nil {
incl = &ServerInclude{}
}
2020-06-07 15:04:57 +00:00
resp := struct {
2021-05-02 14:07:54 +00:00
Server twmodel.Server `json:"server" gqlgen:"server"`
2020-06-07 15:04:57 +00:00
}{}
2020-06-18 15:48:23 +00:00
query := fmt.Sprintf(`
2020-06-07 15:04:57 +00:00
query server($key: String!) {
server(key: $key) {
key
status
2020-06-19 17:40:53 +00:00
dataUpdatedAt
2020-06-23 14:56:13 +00:00
historyUpdatedAt
statsUpdatedAt
numberOfTribes
numberOfPlayers
numberOfVillages
2020-06-18 15:48:23 +00:00
%s
2020-06-07 15:04:57 +00:00
}
}
2020-06-18 15:48:23 +00:00
`, incl.String())
err := s.sdk.Post(query, &resp, client.Var("key", key))
2020-06-07 15:04:57 +00:00
if err != nil {
return nil, errors.Wrap(err, "twhelp sdk")
}
return &resp.Server, nil
2020-06-07 15:04:57 +00:00
}
type ServerList struct {
2021-05-02 14:07:54 +00:00
Items []*twmodel.Server `json:"items" gqlgen:"items"`
Total int `json:"total" gqlgen:"total"`
2020-06-07 15:04:57 +00:00
}
2020-11-21 11:59:05 +00:00
func (s *Server) Browse(limit,
offset int,
sort []string,
2021-05-02 14:07:54 +00:00
filter *twmodel.ServerFilter,
2020-11-21 11:59:05 +00:00
incl *ServerInclude) (*ServerList, error) {
2020-06-18 15:48:23 +00:00
if incl == nil {
incl = &ServerInclude{}
}
2020-06-07 15:04:57 +00:00
if filter == nil {
2021-05-02 14:07:54 +00:00
filter = &twmodel.ServerFilter{}
2020-06-07 15:04:57 +00:00
}
resp := struct {
Servers ServerList `json:"servers" gqlgen:"servers"`
2020-06-07 15:04:57 +00:00
}{}
2020-06-18 15:48:23 +00:00
query := fmt.Sprintf(`
2020-11-21 11:59:05 +00:00
query servers($filter: ServerFilter, $limit: Int, $offset: Int, $sort: [String!]) {
servers(filter: $filter, limit: $limit, offset: $offset, sort: $sort) {
items {
2020-06-07 15:04:57 +00:00
key
status
2020-06-19 17:40:53 +00:00
dataUpdatedAt
2020-06-23 14:56:13 +00:00
historyUpdatedAt
statsUpdatedAt
numberOfTribes
numberOfPlayers
numberOfVillages
2020-06-18 15:48:23 +00:00
%s
2020-06-07 15:04:57 +00:00
}
total
}
}
2020-06-18 15:48:23 +00:00
`, incl.String())
2020-06-07 15:04:57 +00:00
2020-11-21 11:59:05 +00:00
err := s.sdk.Post(query,
&resp,
client.Var("filter", filter),
client.Var("limit", limit),
client.Var("offset", offset),
client.Var("sort", sort))
2020-06-07 15:04:57 +00:00
if err != nil {
return nil, errors.Wrap(err, "twhelp sdk")
}
return &resp.Servers, nil
2020-06-07 15:04:57 +00:00
}