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/tribe.go

72 lines
1.6 KiB
Go
Raw Normal View History

2020-06-07 15:04:57 +00:00
package sdk
import (
"fmt"
2021-05-02 14:07:54 +00:00
"github.com/tribalwarshelp/shared/tw/twmodel"
2020-06-07 15:04:57 +00:00
"github.com/Kichiyaki/gqlgen-client/client"
"github.com/pkg/errors"
)
type Tribe struct {
2020-06-07 15:04:57 +00:00
sdk *SDK
}
2021-05-02 14:07:54 +00:00
func (t *Tribe) Read(server string, id int) (*twmodel.Tribe, error) {
2020-06-07 15:04:57 +00:00
resp := struct {
2021-05-02 14:07:54 +00:00
Tribe twmodel.Tribe `json:"tribe" gqlgen:"tribe"`
2020-06-07 15:04:57 +00:00
}{}
query := fmt.Sprintf(`
query tribe($server: String!, $id: Int!) {
tribe(server: $server, id: $id) {
%s
}
}
`, tribeFields)
err := t.sdk.Post(query, &resp, client.Var("server", server), client.Var("id", id))
2020-06-07 15:04:57 +00:00
if err != nil {
return nil, errors.Wrap(err, "twhelp sdk")
}
return &resp.Tribe, nil
2020-06-07 15:04:57 +00:00
}
type TribeList struct {
2021-05-02 14:07:54 +00:00
Items []*twmodel.Tribe `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 (t *Tribe) Browse(server string,
limit,
offset int,
sort []string,
2021-05-02 14:07:54 +00:00
filter *twmodel.TribeFilter) (*TribeList, error) {
2020-06-07 15:04:57 +00:00
if filter == nil {
2021-05-02 14:07:54 +00:00
filter = &twmodel.TribeFilter{}
2020-06-07 15:04:57 +00:00
}
resp := struct {
Tribes TribeList `json:"tribes" gqlgen:"tribes"`
2020-06-07 15:04:57 +00:00
}{}
query := fmt.Sprintf(`
2020-11-21 11:59:05 +00:00
query tribes($server: String!, $filter: TribeFilter, $limit: Int, $offset: Int, $sort: [String!]) {
tribes(server: $server, filter: $filter, limit: $limit, offset: $offset, sort: $sort) {
2020-06-07 15:04:57 +00:00
items {
%s
}
total
}
}
`, tribeFields)
2020-11-21 11:59:05 +00:00
err := t.sdk.Post(query,
&resp,
client.Var("filter", filter),
client.Var("server", server),
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.Tribes, nil
2020-06-07 15:04:57 +00:00
}