huge refactor, rename some of the packages

models:
- remove most of the helpers and use github.com/Kichiyaki/gopgutil/v10
- remove relationship/sort appenders
- add a new model - Coords and a new constructor for this model - ParseCoords
This commit is contained in:
Dawid Wysokiński 2021-05-02 15:35:24 +02:00
parent 47373e8171
commit b5464a6da5
32 changed files with 887 additions and 1087 deletions

1
go.mod
View File

@ -4,6 +4,7 @@ go 1.16
require (
github.com/Kichiyaki/go-php-serialize v0.0.0-20200601110855-47b6982acf83
github.com/Kichiyaki/gopgutil/v10 v10.0.0-20210502103432-20b73c1e09b3 // indirect
github.com/go-pg/pg/v10 v10.9.1
github.com/pkg/errors v0.9.1
github.com/vmihailenco/msgpack/v5 v5.3.1 // indirect

4
go.sum
View File

@ -2,6 +2,10 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/Kichiyaki/go-php-serialize v0.0.0-20200601110855-47b6982acf83 h1:Oa8Bk4LNcknxw50gZOlvPwEreOlAbOnu7V82lUYNbOM=
github.com/Kichiyaki/go-php-serialize v0.0.0-20200601110855-47b6982acf83/go.mod h1:+iGkf5HfOVeRVd9K7qQDucIl+/Kt3MyenMa90b/O/c4=
github.com/Kichiyaki/gopgutil/v10 v10.0.0-20210502103432-20b73c1e09b3 h1:kF01z5HAcpmn8PeGysegVKWblqV/t+boiZFi+6TIFVM=
github.com/Kichiyaki/gopgutil/v10 v10.0.0-20210502103432-20b73c1e09b3/go.mod h1:Ol4iqPU50Ena5DFDOJvGnr17/gVbnhqSW/TuI0mWyo4=
github.com/Kichiyaki/goutil v0.0.0-20210502095630-318d17091eab h1:XFHuFbQQPKkSYw/Z+nQ0ZeOz/Bx3PFWRk0lWtJc7yx8=
github.com/Kichiyaki/goutil v0.0.0-20210502095630-318d17091eab/go.mod h1:+HhI932Xb0xrCodNcCv5GPiCjLYhDxWhCtlEqMIJhB4=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=

View File

@ -1,103 +0,0 @@
package models
import (
"strings"
"time"
)
func addAliasToColumnName(column, prefix string) string {
if prefix != "" && !strings.HasPrefix(column, prefix+".") {
column = wrapStringInDoubleQuotes(prefix) + "." + wrapStringInDoubleQuotes(column)
} else {
column = wrapStringInDoubleQuotes(column)
}
return column
}
func wrapStringInDoubleQuotes(str string) string {
return `"` + str + `"`
}
func buildConditionEquals(column string) string {
return column + " = ?"
}
func buildConditionLT(column string) string {
return column + " < ?"
}
func buildConditionLTE(column string) string {
return column + " <= ?"
}
func buildConditionGT(column string) string {
return column + " > ?"
}
func buildConditionGTE(column string) string {
return column + " >= ?"
}
func buildConditionMatch(column string) string {
return column + " LIKE ?"
}
func buildConditionIEQ(column string) string {
return column + " ILIKE ?"
}
func buildConditionArray(column string) string {
return column + " = ANY(?)"
}
func buildConditionNotInArray(column string) string {
return "NOT (" + buildConditionArray(column) + ")"
}
func isZero(v interface{}) bool {
switch c := v.(type) {
case string:
return c == ""
case *string:
return c == nil
case []string:
return c == nil || len(c) == 0
case []VersionCode:
return c == nil || len(c) == 0
case []ServerStatus:
return c == nil || len(c) == 0
case int:
return c == 0
case *int:
return c == nil
case []int:
return c == nil || len(c) == 0
case float64:
return c == 0
case *float64:
return c == nil
case float32:
return c == 0
case *float32:
return c == nil
case bool:
return !c
case *bool:
return c == nil
case time.Time:
return c.IsZero()
case *time.Time:
return c == nil
default:
return false
}
}
func findStringWithPrefix(sl []string, prefix string) string {
for _, s := range sl {
if strings.HasPrefix(s, prefix) {
return s
}
}
return ""
}

View File

@ -1,188 +0,0 @@
package models
import "github.com/go-pg/pg/v10/orm"
type OpponentsDefeated struct {
RankAtt int `json:"rankAtt" pg:",use_zero" gqlgen:"rankAtt"`
ScoreAtt int `pg:",use_zero" json:"scoreAtt" gqlgen:"scoreAtt"`
RankDef int `pg:",use_zero" json:"rankDef" gqlgen:"rankDef"`
ScoreDef int `pg:",use_zero" json:"scoreDef" gqlgen:"scoreDef"`
RankSup int `pg:",use_zero" json:"rankSup,omitempty" gqlgen:"rankSup"`
ScoreSup int `pg:",use_zero" json:"scoreSup,omitempty" gqlgen:"scoreSup"`
RankTotal int `pg:",use_zero" json:"rankTotal" gqlgen:"rankTotal"`
ScoreTotal int `pg:",use_zero" json:"scoreTotal" gqlgen:"scoreTotal"`
}
type OpponentsDefeatedFilter struct {
RankAtt int `json:"rankAtt" gqlgen:"rankAtt"`
RankAttGT int `json:"rankAttGT" gqlgen:"rankAttGT"`
RankAttGTE int `json:"rankAttGTE" gqlgen:"rankAttGTE"`
RankAttLT int `json:"rankAttLT" gqlgen:"rankAttLT"`
RankAttLTE int `json:"rankAttLTE" gqlgen:"rankAttLTE"`
ScoreAtt int `json:"scoreAtt" gqlgen:"scoreAtt"`
ScoreAttGT int `json:"scoreAttGT" gqlgen:"scoreAttGT"`
ScoreAttGTE int `json:"scoreAttGTE" gqlgen:"scoreAttGTE"`
ScoreAttLT int `json:"scoreAttLT" gqlgen:"scoreAttLT"`
ScoreAttLTE int `json:"scoreAttLTE" gqlgen:"scoreAttLTE"`
RankDef int `json:"rankDef" gqlgen:"rankDef"`
RankDefGT int `json:"rankDefGT" gqlgen:"rankDefGT"`
RankDefGTE int `json:"rankDefGTE" gqlgen:"rankDefGTE"`
RankDefLT int `json:"rankDefLT" gqlgen:"rankDefLT"`
RankDefLTE int `json:"rankDefLTE" gqlgen:"rankDefLTE"`
ScoreDef int `json:"scoreDef" gqlgen:"scoreDef"`
ScoreDefGT int `json:"scoreDefGT" gqlgen:"scoreDefGT"`
ScoreDefGTE int `json:"scoreDefGTE" gqlgen:"scoreDefGTE"`
ScoreDefLT int `json:"scoreDefLT" gqlgen:"scoreDefLT"`
ScoreDefLTE int `json:"scoreDefLTE" gqlgen:"scoreDefLTE"`
RankSup int `json:"rankSup,omitempty" gqlgen:"rankSup"`
RankSupGT int `json:"rankSupGT,omitempty" gqlgen:"rankSupGT"`
RankSupGTE int `json:"rankSupGTE,omitempty" gqlgen:"rankSupGTE"`
RankSupLT int `json:"rankSupLT,omitempty" gqlgen:"rankSupLT"`
RankSupLTE int `json:"rankSupLTE,omitempty" gqlgen:"rankSupLTE"`
ScoreSup int `json:"scoreSup,omitempty" gqlgen:"scoreSup"`
ScoreSupGT int `json:"scoreSupGT,omitempty" gqlgen:"scoreSupGT"`
ScoreSupGTE int `json:"scoreSupGTE,omitempty" gqlgen:"scoreSupGTE"`
ScoreSupLT int `json:"scoreSupLT,omitempty" gqlgen:"scoreSupLT"`
ScoreSupLTE int `json:"scoreSupLTE,omitempty" gqlgen:"scoreSupLTE"`
RankTotal int `json:"rankTotal" gqlgen:"rankTotal"`
RankTotalGT int `json:"rankTotalGT" gqlgen:"rankTotalGT"`
RankTotalGTE int `json:"rankTotalGTE" gqlgen:"rankTotalGTE"`
RankTotalLT int `json:"rankTotalLT" gqlgen:"rankTotalLT"`
RankTotalLTE int `json:"rankTotalLTE" gqlgen:"rankTotalLTE"`
ScoreTotal int `json:"scoreTotal" gqlgen:"scoreTotal"`
ScoreTotalGT int `json:"scoreTotalGT" gqlgen:"scoreTotalGT"`
ScoreTotalGTE int `json:"scoreTotalGTE" gqlgen:"scoreTotalGTE"`
ScoreTotalLT int `json:"scoreTotalLT" gqlgen:"scoreTotalLT"`
ScoreTotalLTE int `json:"scoreTotalLTE" gqlgen:"scoreTotalLTE"`
}
func (f *OpponentsDefeatedFilter) WhereWithAlias(q *orm.Query, alias string) (*orm.Query, error) {
if !isZero(f.RankAtt) {
q = q.Where(buildConditionEquals(addAliasToColumnName("rank_att", alias)), f.RankAtt)
}
if !isZero(f.RankAttGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("rank_att", alias)), f.RankAttGT)
}
if !isZero(f.RankAttGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("rank_att", alias)), f.RankAttGTE)
}
if !isZero(f.RankAttLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("rank_att", alias)), f.RankAttLT)
}
if !isZero(f.RankAttLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("rank_att", alias)), f.RankAttLTE)
}
if !isZero(f.ScoreAtt) {
q = q.Where(buildConditionEquals(addAliasToColumnName("score_att", alias)), f.ScoreAtt)
}
if !isZero(f.ScoreAttGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("score_att", alias)), f.ScoreAttGT)
}
if !isZero(f.ScoreAttGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("score_att", alias)), f.ScoreAttGTE)
}
if !isZero(f.ScoreAttLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("score_att", alias)), f.ScoreAttLT)
}
if !isZero(f.ScoreAttLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("score_att", alias)), f.ScoreAttLTE)
}
if !isZero(f.RankDef) {
q = q.Where(buildConditionEquals(addAliasToColumnName("rank_def", alias)), f.RankDef)
}
if !isZero(f.RankDefGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("rank_def", alias)), f.RankDefGT)
}
if !isZero(f.RankDefGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("rank_def", alias)), f.RankDefGTE)
}
if !isZero(f.RankDefLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("rank_def", alias)), f.RankDefLT)
}
if !isZero(f.RankDefLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("rank_def", alias)), f.RankDefLTE)
}
if !isZero(f.ScoreDef) {
q = q.Where(buildConditionEquals(addAliasToColumnName("score_def", alias)), f.ScoreDef)
}
if !isZero(f.ScoreDefGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("score_def", alias)), f.ScoreDefGT)
}
if !isZero(f.ScoreDefGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("score_def", alias)), f.ScoreDefGTE)
}
if !isZero(f.ScoreDefLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("score_def", alias)), f.ScoreDefLT)
}
if !isZero(f.ScoreDefLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("score_def", alias)), f.ScoreDefLTE)
}
if !isZero(f.RankSup) {
q = q.Where(buildConditionEquals(addAliasToColumnName("rank_sup", alias)), f.RankSup)
}
if !isZero(f.RankSupGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("rank_sup", alias)), f.RankSupGT)
}
if !isZero(f.RankSupGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("rank_sup", alias)), f.RankSupGTE)
}
if !isZero(f.RankSupLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("rank_sup", alias)), f.RankSupLT)
}
if !isZero(f.RankSupLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("rank_sup", alias)), f.RankSupLTE)
}
if !isZero(f.ScoreSup) {
q = q.Where(buildConditionEquals(addAliasToColumnName("score_sup", alias)), f.ScoreSup)
}
if !isZero(f.ScoreSupGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("score_sup", alias)), f.ScoreSupGT)
}
if !isZero(f.ScoreSupGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("score_sup", alias)), f.ScoreSupGTE)
}
if !isZero(f.ScoreSupLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("score_sup", alias)), f.ScoreSupLT)
}
if !isZero(f.ScoreSupLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("score_sup", alias)), f.ScoreSupLTE)
}
if !isZero(f.RankTotal) {
q = q.Where(buildConditionEquals(addAliasToColumnName("rank_total", alias)), f.RankTotal)
}
if !isZero(f.RankTotalGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("rank_total", alias)), f.RankTotalGT)
}
if !isZero(f.RankTotalGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("rank_total", alias)), f.RankTotalGTE)
}
if !isZero(f.RankTotalLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("rank_total", alias)), f.RankTotalLT)
}
if !isZero(f.RankTotalLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("rank_total", alias)), f.RankTotalLTE)
}
if !isZero(f.ScoreTotal) {
q = q.Where(buildConditionEquals(addAliasToColumnName("score_total", alias)), f.ScoreTotal)
}
if !isZero(f.ScoreTotalGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("score_total", alias)), f.ScoreTotalGT)
}
if !isZero(f.ScoreTotalGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("score_total", alias)), f.ScoreTotalGTE)
}
if !isZero(f.ScoreTotalLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("score_total", alias)), f.ScoreTotalLT)
}
if !isZero(f.ScoreTotalLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("score_total", alias)), f.ScoreTotalLTE)
}
return q, nil
}

View File

@ -1,232 +0,0 @@
package models
import (
"fmt"
"strconv"
"strings"
"github.com/go-pg/pg/v10"
"github.com/go-pg/pg/v10/orm"
)
type Village struct {
tableName struct{} `pg:"?SERVER.villages,alias:village"`
ID int `json:"id" pg:"type:bigint,pk" gqlgen:"id"`
Name string `json:"name" gqlgen:"name"`
Points int `json:"points" pg:",use_zero" gqlgen:"points"`
X int `json:"x" pg:",use_zero" gqlgen:"x"`
Y int `json:"y" pg:",use_zero" gqlgen:"y"`
Bonus int `json:"bonus" pg:",use_zero" gqlgen:"bonus"`
PlayerID int `json:"-" pg:",use_zero" gqlgen:"playerID"`
Player *Player `json:"player,omitempty" gqlgen:"-" pg:"rel:has-one"`
}
func (v *Village) Continent() string {
if v == nil {
return ""
}
return fmt.Sprintf("K%c%c", strconv.FormatInt(int64(v.Y), 10)[0], strconv.FormatInt(int64(v.X), 10)[0])
}
func (v *Village) FullName() string {
return fmt.Sprintf("%s (%d|%d) %s",
v.Name,
v.X,
v.Y,
v.Continent())
}
type VillageFilter struct {
ID []int `json:"id" gqlgen:"id"`
IDNEQ []int `json:"idNEQ" gqlgen:"idNEQ"`
Name []string `json:"name" gqlgen:"name"`
NameNEQ []string `json:"nameNEQ" gqlgen:"nameNEQ"`
NameMATCH string `json:"nameMATCH" gqlgen:"nameMATCH"`
NameIEQ string `json:"nameIEQ" gqlgen:"nameIEQ"`
XGT int `json:"xGT" gqlgen:"xGT"`
XGTE int `json:"xGTE" gqlgen:"xGTE"`
XLT int `json:"xLT" gqlgen:"xLT"`
XLTE int `json:"xLTE" gqlgen:"xLTE"`
YGT int `json:"yGT" gqlgen:"yGT"`
YGTE int `json:"yGTE" gqlgen:"yGTE"`
YLT int `json:"yLT" gqlgen:"yLT"`
YLTE int `json:"yLTE" gqlgen:"yLTE"`
XY []string `json:"xy" gqlgen:"xy"`
Points int `json:"points" gqlgen:"points"`
PointsGT int `json:"pointsGT" gqlgen:"pointsGT"`
PointsGTE int `json:"pointsGTE" gqlgen:"pointsGTE"`
PointsLT int `json:"pointsLT" gqlgen:"pointsLT"`
PointsLTE int `json:"pointsLTE" gqlgen:"pointsLTE"`
Bonus int `json:"bonus" gqlgen:"bonus"`
BonusGT int `json:"bonusGT" gqlgen:"bonusGT"`
BonusGTE int `json:"bonusGTE" gqlgen:"bonusGTE"`
BonusLT int `json:"bonusLT" gqlgen:"bonusLT"`
BonusLTE int `json:"bonusLTE" gqlgen:"bonusLTE"`
PlayerID []int `json:"playerID" gqlgen:"playerID"`
PlayerIDNEQ []int `json:"playerIDNEQ" gqlgen:"playerIDNEQ"`
PlayerFilter *PlayerFilter `json:"playerFilter" gqlgen:"playerFilter"`
}
func (f *VillageFilter) WhereWithAlias(q *orm.Query, alias string) (*orm.Query, error) {
if !isZero(f.ID) {
q = q.Where(buildConditionArray(addAliasToColumnName("id", alias)), pg.Array(f.ID))
}
if !isZero(f.IDNEQ) {
q = q.Where(buildConditionNotInArray(addAliasToColumnName("id", alias)), pg.Array(f.IDNEQ))
}
if !isZero(f.Name) {
q = q.Where(buildConditionArray(addAliasToColumnName("name", alias)), pg.Array(f.Name))
}
if !isZero(f.NameNEQ) {
q = q.Where(buildConditionNotInArray(addAliasToColumnName("name", alias)), pg.Array(f.NameNEQ))
}
if !isZero(f.NameMATCH) {
q = q.Where(buildConditionMatch(addAliasToColumnName("name", alias)), f.NameMATCH)
}
if !isZero(f.NameIEQ) {
q = q.Where(buildConditionIEQ(addAliasToColumnName("name", alias)), f.NameIEQ)
}
if !isZero(f.XGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("x", alias)), f.XGT)
}
if !isZero(f.XGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("x", alias)), f.XGTE)
}
if !isZero(f.XLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("x", alias)), f.XLT)
}
if !isZero(f.XLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("x", alias)), f.XLTE)
}
if !isZero(f.YGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("y", alias)), f.YGT)
}
if !isZero(f.YGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("y", alias)), f.YGTE)
}
if !isZero(f.YLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("y", alias)), f.YLT)
}
if !isZero(f.YLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("y", alias)), f.YLTE)
}
if !isZero(f.XY) {
q = q.WhereGroup(func(q *orm.Query) (*orm.Query, error) {
for _, xy := range f.XY {
splitted := strings.Split(xy, "|")
if len(splitted) != 2 {
continue
}
x, err := strconv.Atoi(splitted[0])
if err != nil {
continue
}
y, err := strconv.Atoi(splitted[1])
if err != nil {
continue
}
q = q.WhereOrGroup(func(q *orm.Query) (*orm.Query, error) {
q = q.Where("x = ?", x)
q = q.Where("y = ?", y)
return q, nil
})
}
return q, nil
})
}
if !isZero(f.Points) {
q = q.Where(buildConditionEquals(addAliasToColumnName("points", alias)), f.Points)
}
if !isZero(f.PointsGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("points", alias)), f.PointsGT)
}
if !isZero(f.PointsGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("points", alias)), f.PointsGTE)
}
if !isZero(f.PointsLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("points", alias)), f.PointsLT)
}
if !isZero(f.PointsLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("points", alias)), f.PointsLTE)
}
if !isZero(f.Bonus) {
q = q.Where(buildConditionEquals(addAliasToColumnName("bonus", alias)), f.Bonus)
}
if !isZero(f.BonusGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("bonus", alias)), f.BonusGT)
}
if !isZero(f.BonusGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("bonus", alias)), f.BonusGTE)
}
if !isZero(f.BonusLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("bonus", alias)), f.BonusLT)
}
if !isZero(f.BonusLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("bonus", alias)), f.BonusLTE)
}
if !isZero(f.PlayerID) {
q = q.Where(buildConditionArray(addAliasToColumnName("player_id", alias)), pg.Array(f.PlayerID))
}
if !isZero(f.PlayerIDNEQ) {
q = q.Where(buildConditionNotInArray(addAliasToColumnName("player_id", alias)), pg.Array(f.PlayerIDNEQ))
}
return q, nil
}
func (f *VillageFilter) Where(q *orm.Query) (*orm.Query, error) {
return f.WhereWithAlias(q, "village")
}
type VillageRelationshipAndSortAppender struct {
Filter *VillageFilter
Sort []string
}
func (a *VillageRelationshipAndSortAppender) Append(q *orm.Query) (*orm.Query, error) {
var err error
playerRequired := findStringWithPrefix(a.Sort, "player.") != ""
playerTribeRequired := findStringWithPrefix(a.Sort, "player.tribe.") != ""
if a.Filter.PlayerFilter != nil {
q, err = a.Filter.PlayerFilter.WhereWithAlias(q, "player")
if err != nil {
return q, err
}
playerRequired = true
if a.Filter.PlayerFilter.TribeFilter != nil {
q, err = a.Filter.PlayerFilter.WhereWithAlias(q, "tribe")
if err != nil {
return q, err
}
playerTribeRequired = true
}
}
if !isZero(a.Sort) {
q = q.Order(a.Sort...)
}
if playerRequired {
q = q.Relation("Player._")
}
if playerTribeRequired {
q = q.Join("LEFT JOIN ?SERVER.tribes AS tribe ON tribe.id = player.tribe_id")
}
return q, nil
}

View File

@ -1,4 +1,4 @@
package dataloader
package twdataloader
import (
"net/http"

View File

@ -1,4 +1,4 @@
package dataloader
package twdataloader
const (
EndpointConfig = "/interface.php?func=get_config"

View File

@ -1,4 +1,4 @@
package dataloader
package twdataloader
import (
"compress/gzip"
@ -15,18 +15,18 @@ import (
"github.com/pkg/errors"
"github.com/tribalwarshelp/shared/models"
models2 "github.com/tribalwarshelp/shared/tw/twmodel"
)
type ServerDataLoader interface {
LoadOD(tribe bool) (map[int]*models.OpponentsDefeated, error)
LoadPlayers() ([]*models.Player, error)
LoadTribes() ([]*models.Tribe, error)
LoadVillages() ([]*models.Village, error)
LoadEnnoblements(cfg *LoadEnnoblementsConfig) ([]*models.Ennoblement, error)
GetConfig() (*models.ServerConfig, error)
GetBuildingConfig() (*models.BuildingConfig, error)
GetUnitConfig() (*models.UnitConfig, error)
LoadOD(tribe bool) (map[int]*models2.OpponentsDefeated, error)
LoadPlayers() ([]*models2.Player, error)
LoadTribes() ([]*models2.Tribe, error)
LoadVillages() ([]*models2.Village, error)
LoadEnnoblements(cfg *LoadEnnoblementsConfig) ([]*models2.Ennoblement, error)
GetConfig() (*models2.ServerConfig, error)
GetBuildingConfig() (*models2.BuildingConfig, error)
GetUnitConfig() (*models2.UnitConfig, error)
}
type serverDataLoader struct {
@ -72,8 +72,8 @@ func (d *serverDataLoader) parseODLine(line []string) (*parsedODLine, error) {
return p, nil
}
func (d *serverDataLoader) LoadOD(tribe bool) (map[int]*models.OpponentsDefeated, error) {
m := make(map[int]*models.OpponentsDefeated)
func (d *serverDataLoader) LoadOD(tribe bool) (map[int]*models2.OpponentsDefeated, error) {
m := make(map[int]*models2.OpponentsDefeated)
formattedURLs := []string{
fmt.Sprintf("%s%s", d.baseURL, EndpointKillAll),
fmt.Sprintf("%s%s", d.baseURL, EndpointKillAtt),
@ -106,7 +106,7 @@ func (d *serverDataLoader) LoadOD(tribe bool) (map[int]*models.OpponentsDefeated
return nil, errors.Wrapf(err, "couldn't parse the line, url %s, line %s", formattedURL, strings.Join(line, ","))
}
if _, ok := m[parsed.ID]; !ok {
m[parsed.ID] = &models.OpponentsDefeated{}
m[parsed.ID] = &models2.OpponentsDefeated{}
}
switch formattedURL {
case formattedURLs[0]:
@ -127,14 +127,14 @@ func (d *serverDataLoader) LoadOD(tribe bool) (map[int]*models.OpponentsDefeated
return m, nil
}
func (d *serverDataLoader) parsePlayerLine(line []string) (*models.Player, error) {
func (d *serverDataLoader) parsePlayerLine(line []string) (*models2.Player, error) {
if len(line) != 6 {
return nil, errors.New("Invalid line format (should be id,name,tribeid,villages,points,rank)")
}
var err error
ex := true
player := &models.Player{
player := &models2.Player{
Exists: &ex,
}
player.ID, err = strconv.Atoi(line[0])
@ -165,7 +165,7 @@ func (d *serverDataLoader) parsePlayerLine(line []string) (*models.Player, error
return player, nil
}
func (d *serverDataLoader) LoadPlayers() ([]*models.Player, error) {
func (d *serverDataLoader) LoadPlayers() ([]*models2.Player, error) {
formattedURL := d.baseURL + EndpointPlayer
lines, err := d.getCSVData(formattedURL, true)
if err != nil {
@ -175,7 +175,7 @@ func (d *serverDataLoader) LoadPlayers() ([]*models.Player, error) {
}
}
var players []*models.Player
var players []*models2.Player
for _, line := range lines {
player, err := d.parsePlayerLine(line)
if err != nil {
@ -187,14 +187,14 @@ func (d *serverDataLoader) LoadPlayers() ([]*models.Player, error) {
return players, nil
}
func (d *serverDataLoader) parseTribeLine(line []string) (*models.Tribe, error) {
func (d *serverDataLoader) parseTribeLine(line []string) (*models2.Tribe, error) {
if len(line) != 8 {
return nil, errors.New("invalid line format (should be id,name,tag,members,villages,points,allpoints,rank)")
}
var err error
ex := true
tribe := &models.Tribe{
tribe := &models2.Tribe{
Exists: &ex,
}
tribe.ID, err = strconv.Atoi(line[0])
@ -233,7 +233,7 @@ func (d *serverDataLoader) parseTribeLine(line []string) (*models.Tribe, error)
return tribe, nil
}
func (d *serverDataLoader) LoadTribes() ([]*models.Tribe, error) {
func (d *serverDataLoader) LoadTribes() ([]*models2.Tribe, error) {
formattedURL := d.baseURL + EndpointTribe
lines, err := d.getCSVData(formattedURL, true)
if err != nil {
@ -242,7 +242,7 @@ func (d *serverDataLoader) LoadTribes() ([]*models.Tribe, error) {
return nil, errors.Wrapf(err, "cannot to get data, url %s", formattedURL)
}
}
var tribes []*models.Tribe
var tribes []*models2.Tribe
for _, line := range lines {
tribe, err := d.parseTribeLine(line)
if err != nil {
@ -253,12 +253,12 @@ func (d *serverDataLoader) LoadTribes() ([]*models.Tribe, error) {
return tribes, nil
}
func (d *serverDataLoader) parseVillageLine(line []string) (*models.Village, error) {
func (d *serverDataLoader) parseVillageLine(line []string) (*models2.Village, error) {
if len(line) != 7 {
return nil, errors.New("invalid line format (should be id,name,x,y,playerID,points,bonus)")
}
var err error
village := &models.Village{}
village := &models2.Village{}
village.ID, err = strconv.Atoi(line[0])
if err != nil {
return nil, errors.Wrap(err, "village.ID")
@ -290,7 +290,7 @@ func (d *serverDataLoader) parseVillageLine(line []string) (*models.Village, err
return village, nil
}
func (d *serverDataLoader) LoadVillages() ([]*models.Village, error) {
func (d *serverDataLoader) LoadVillages() ([]*models2.Village, error) {
formattedURL := d.baseURL + EndpointVillage
lines, err := d.getCSVData(formattedURL, true)
if err != nil {
@ -299,7 +299,7 @@ func (d *serverDataLoader) LoadVillages() ([]*models.Village, error) {
return nil, errors.Wrapf(err, "couldn't load data, formattedURL %s", formattedURL)
}
}
var villages []*models.Village
var villages []*models2.Village
for _, line := range lines {
village, err := d.parseVillageLine(line)
if err != nil {
@ -310,12 +310,12 @@ func (d *serverDataLoader) LoadVillages() ([]*models.Village, error) {
return villages, nil
}
func (d *serverDataLoader) parseEnnoblementLine(line []string) (*models.Ennoblement, error) {
func (d *serverDataLoader) parseEnnoblementLine(line []string) (*models2.Ennoblement, error) {
if len(line) != 4 {
return nil, errors.New("invalid line format (should be village_id,timestamp,new_owner_id,old_owner_id)")
}
var err error
ennoblement := &models.Ennoblement{}
ennoblement := &models2.Ennoblement{}
ennoblement.VillageID, err = strconv.Atoi(line[0])
if err != nil {
return nil, errors.Wrap(err, "ennoblement.VillageID")
@ -341,7 +341,7 @@ type LoadEnnoblementsConfig struct {
EnnobledAtGT time.Time
}
func (d *serverDataLoader) LoadEnnoblements(cfg *LoadEnnoblementsConfig) ([]*models.Ennoblement, error) {
func (d *serverDataLoader) LoadEnnoblements(cfg *LoadEnnoblementsConfig) ([]*models2.Ennoblement, error) {
if cfg == nil {
cfg = &LoadEnnoblementsConfig{}
}
@ -360,7 +360,7 @@ func (d *serverDataLoader) LoadEnnoblements(cfg *LoadEnnoblementsConfig) ([]*mod
return nil, errors.Wrapf(err, "couldn't load data, formattedURL %s", formattedURL)
}
var ennoblements []*models.Ennoblement
var ennoblements []*models2.Ennoblement
for _, line := range lines {
ennoblement, err := d.parseEnnoblementLine(line)
if err != nil {
@ -373,9 +373,9 @@ func (d *serverDataLoader) LoadEnnoblements(cfg *LoadEnnoblementsConfig) ([]*mod
return ennoblements, nil
}
func (d *serverDataLoader) GetConfig() (*models.ServerConfig, error) {
func (d *serverDataLoader) GetConfig() (*models2.ServerConfig, error) {
formattedURL := d.baseURL + EndpointConfig
cfg := &models.ServerConfig{}
cfg := &models2.ServerConfig{}
err := d.getXML(formattedURL, cfg)
if err != nil {
return nil, errors.Wrap(err, "getConfig")
@ -383,9 +383,9 @@ func (d *serverDataLoader) GetConfig() (*models.ServerConfig, error) {
return cfg, nil
}
func (d *serverDataLoader) GetBuildingConfig() (*models.BuildingConfig, error) {
func (d *serverDataLoader) GetBuildingConfig() (*models2.BuildingConfig, error) {
formattedURL := d.baseURL + EndpointBuildingConfig
cfg := &models.BuildingConfig{}
cfg := &models2.BuildingConfig{}
err := d.getXML(formattedURL, cfg)
if err != nil {
return nil, errors.Wrap(err, "getBuildingConfig")
@ -393,9 +393,9 @@ func (d *serverDataLoader) GetBuildingConfig() (*models.BuildingConfig, error) {
return cfg, nil
}
func (d *serverDataLoader) GetUnitConfig() (*models.UnitConfig, error) {
func (d *serverDataLoader) GetUnitConfig() (*models2.UnitConfig, error) {
formattedURL := d.baseURL + EndpointUnitConfig
cfg := &models.UnitConfig{}
cfg := &models2.UnitConfig{}
err := d.getXML(formattedURL, cfg)
if err != nil {
return nil, errors.Wrap(err, "getUnitConfig")

View File

@ -1,4 +1,4 @@
package dataloader
package twdataloader
import (
"fmt"

View File

@ -1,4 +1,4 @@
package models
package twmodel
import "encoding/xml"

30
tw/twmodel/coords.go Normal file
View File

@ -0,0 +1,30 @@
package twmodel
import (
"github.com/pkg/errors"
"strconv"
"strings"
)
const CoordsSeparator = "|"
type Coords struct {
X int
Y int
}
func ParseCoords(coords string) (*Coords, error) {
splitted := strings.Split(coords, CoordsSeparator)
if len(splitted) != 2 {
return nil, errors.Errorf("%s: invalid format (should be number|number)", coords)
}
x, err := strconv.Atoi(splitted[0])
if err != nil {
return nil, errors.Wrapf(err, "%s: the part before | isn't a number", coords)
}
y, err := strconv.Atoi(splitted[1])
if err != nil {
return nil, errors.Wrapf(err, "%s: the part after | isn't a number", coords)
}
return &Coords{x, y}, nil
}

View File

@ -1,6 +1,7 @@
package models
package twmodel
import (
"github.com/Kichiyaki/gopgutil/v10"
"time"
"github.com/go-pg/pg/v10"
@ -34,27 +35,34 @@ type DailyPlayerStatsFilter struct {
}
func (f *DailyPlayerStatsFilter) WhereWithAlias(q *orm.Query, alias string) (*orm.Query, error) {
if f == nil {
return q, nil
}
if !isZero(f.CreateDate) {
q = q.Where(buildConditionEquals(addAliasToColumnName("create_date", alias)), f.CreateDate)
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("create_date", alias)), f.CreateDate)
}
if !isZero(f.CreateDateGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("create_date", alias)), f.CreateDateGT)
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("create_date", alias)), f.CreateDateGT)
}
if !isZero(f.CreateDateGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("create_date", alias)), f.CreateDateGTE)
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("create_date", alias)), f.CreateDateGTE)
}
if !isZero(f.CreateDateLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("create_date", alias)), f.CreateDateLT)
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("create_date", alias)), f.CreateDateLT)
}
if !isZero(f.CreateDateLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("create_date", alias)), f.CreateDateLTE)
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("create_date", alias)), f.CreateDateLTE)
}
if !isZero(f.PlayerID) {
q = q.Where(buildConditionArray(addAliasToColumnName("player_id", alias)), pg.Array(f.PlayerID))
q = q.Where(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("player_id", alias)), pg.Array(f.PlayerID))
}
if !isZero(f.PlayerIDNEQ) {
q = q.Where(buildConditionNotInArray(addAliasToColumnName("player_id", alias)), pg.Array(f.PlayerIDNEQ))
q = q.Where(gopgutil.BuildConditionNotInArray(gopgutil.AddAliasToColumnName("player_id", alias)), pg.Array(f.PlayerIDNEQ))
}
if f.PlayerFilter != nil {
return f.PlayerFilter.WhereWithAlias(q.Relation("Player._"), "player", "Player.Tribe._", "player__tribe")
}
return q, nil
@ -63,42 +71,3 @@ func (f *DailyPlayerStatsFilter) WhereWithAlias(q *orm.Query, alias string) (*or
func (f *DailyPlayerStatsFilter) Where(q *orm.Query) (*orm.Query, error) {
return f.WhereWithAlias(q, "daily_player_stats")
}
type DailyPlayerStatsRelationshipAndSortAppender struct {
Filter *DailyPlayerStatsFilter
Sort []string
}
func (a *DailyPlayerStatsRelationshipAndSortAppender) Append(q *orm.Query) (*orm.Query, error) {
var err error
playerRequired := findStringWithPrefix(a.Sort, "player.") != ""
playerTribeRequired := findStringWithPrefix(a.Sort, "player.tribe.") != ""
if a.Filter.PlayerFilter != nil {
q, err = a.Filter.PlayerFilter.WhereWithAlias(q, "player")
if err != nil {
return q, err
}
playerRequired = true
if a.Filter.PlayerFilter.TribeFilter != nil {
q, err = a.Filter.PlayerFilter.WhereWithAlias(q, "tribe")
if err != nil {
return q, err
}
playerTribeRequired = true
}
}
if !isZero(a.Sort) {
q = q.Order(a.Sort...)
}
if playerRequired {
q = q.Relation("Player._")
}
if playerTribeRequired {
q = q.Join("LEFT JOIN ?SERVER.tribes AS tribe ON tribe.id = player.tribe_id")
}
return q, nil
}

View File

@ -1,6 +1,7 @@
package models
package twmodel
import (
"github.com/Kichiyaki/gopgutil/v10"
"time"
"github.com/go-pg/pg/v10"
@ -37,27 +38,34 @@ type DailyTribeStatsFilter struct {
}
func (f *DailyTribeStatsFilter) WhereWithAlias(q *orm.Query, alias string) (*orm.Query, error) {
if f == nil {
return q, nil
}
if !isZero(f.CreateDate) {
q = q.Where(buildConditionEquals(addAliasToColumnName("create_date", alias)), f.CreateDate)
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("create_date", alias)), f.CreateDate)
}
if !isZero(f.CreateDateGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("create_date", alias)), f.CreateDateGT)
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("create_date", alias)), f.CreateDateGT)
}
if !isZero(f.CreateDateGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("create_date", alias)), f.CreateDateGTE)
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("create_date", alias)), f.CreateDateGTE)
}
if !isZero(f.CreateDateLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("create_date", alias)), f.CreateDateLT)
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("create_date", alias)), f.CreateDateLT)
}
if !isZero(f.CreateDateLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("create_date", alias)), f.CreateDateLTE)
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("create_date", alias)), f.CreateDateLTE)
}
if !isZero(f.TribeID) {
q = q.Where(buildConditionArray(addAliasToColumnName("tribe_id", alias)), pg.Array(f.TribeID))
q = q.Where(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("tribe_id", alias)), pg.Array(f.TribeID))
}
if !isZero(f.TribeIDNEQ) {
q = q.Where(buildConditionNotInArray(addAliasToColumnName("tribe_id", alias)), pg.Array(f.TribeIDNEQ))
q = q.Where(gopgutil.BuildConditionNotInArray(gopgutil.AddAliasToColumnName("tribe_id", alias)), pg.Array(f.TribeIDNEQ))
}
if f.TribeFilter != nil {
return f.TribeFilter.WhereWithAlias(q.Relation("Tribe._"), "tribe")
}
return q, nil
@ -66,30 +74,3 @@ func (f *DailyTribeStatsFilter) WhereWithAlias(q *orm.Query, alias string) (*orm
func (f *DailyTribeStatsFilter) Where(q *orm.Query) (*orm.Query, error) {
return f.WhereWithAlias(q, "daily_tribe_stats")
}
type DailyTribeStatsRelationshipAndSortAppender struct {
Filter *DailyTribeStatsFilter
Sort []string
}
func (a *DailyTribeStatsRelationshipAndSortAppender) Append(q *orm.Query) (*orm.Query, error) {
var err error
tribeRequired := findStringWithPrefix(a.Sort, "tribe.") != ""
if a.Filter.TribeFilter != nil {
q, err = a.Filter.TribeFilter.WhereWithAlias(q, "tribe")
if err != nil {
return q, err
}
tribeRequired = true
}
if !isZero(a.Sort) {
q = q.Order(a.Sort...)
}
if tribeRequired {
q = q.Relation("Tribe._")
}
return q, nil
}

View File

@ -1,6 +1,7 @@
package models
package twmodel
import (
"github.com/Kichiyaki/gopgutil/v10"
"time"
"github.com/go-pg/pg/v10"
@ -32,21 +33,23 @@ type EnnoblementFilterOr struct {
}
func (f *EnnoblementFilterOr) WhereWithAlias(q *orm.Query, alias string) *orm.Query {
q = q.WhereGroup(func(q *orm.Query) (*orm.Query, error) {
if !isZero(f.NewOwnerID) {
q = q.WhereOr(buildConditionArray(addAliasToColumnName("new_owner_id", alias)), pg.Array(f.NewOwnerID))
}
if !isZero(f.NewOwnerTribeID) {
q = q.WhereOr(buildConditionArray(addAliasToColumnName("new_owner_tribe_id", alias)), pg.Array(f.NewOwnerTribeID))
}
if !isZero(f.OldOwnerID) {
q = q.WhereOr(buildConditionArray(addAliasToColumnName("old_owner_id", alias)), pg.Array(f.OldOwnerID))
}
if !isZero(f.OldOwnerTribeID) {
q = q.WhereOr(buildConditionArray(addAliasToColumnName("old_owner_tribe_id", alias)), pg.Array(f.OldOwnerTribeID))
}
return q, nil
})
if f != nil {
q = q.WhereGroup(func(q *orm.Query) (*orm.Query, error) {
if !isZero(f.NewOwnerID) {
q = q.WhereOr(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("new_owner_id", alias)), pg.Array(f.NewOwnerID))
}
if !isZero(f.NewOwnerTribeID) {
q = q.WhereOr(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("new_owner_tribe_id", alias)), pg.Array(f.NewOwnerTribeID))
}
if !isZero(f.OldOwnerID) {
q = q.WhereOr(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("old_owner_id", alias)), pg.Array(f.OldOwnerID))
}
if !isZero(f.OldOwnerTribeID) {
q = q.WhereOr(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("old_owner_tribe_id", alias)), pg.Array(f.OldOwnerTribeID))
}
return q, nil
})
}
return q
}
@ -79,135 +82,107 @@ type EnnoblementFilter struct {
}
func (f *EnnoblementFilter) WhereWithAlias(q *orm.Query, alias string) (*orm.Query, error) {
if f == nil {
return q, nil
}
if !isZero(f.EnnobledAt) {
q = q.Where(buildConditionEquals(addAliasToColumnName("ennobled_at", alias)), f.EnnobledAt)
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("ennobled_at", alias)), f.EnnobledAt)
}
if !isZero(f.EnnobledAtGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("ennobled_at", alias)), f.EnnobledAtGT)
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("ennobled_at", alias)), f.EnnobledAtGT)
}
if !isZero(f.EnnobledAtGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("ennobled_at", alias)), f.EnnobledAtGTE)
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("ennobled_at", alias)), f.EnnobledAtGTE)
}
if !isZero(f.EnnobledAtLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("ennobled_at", alias)), f.EnnobledAtLT)
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("ennobled_at", alias)), f.EnnobledAtLT)
}
if !isZero(f.EnnobledAtLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("ennobled_at", alias)), f.EnnobledAtLTE)
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("ennobled_at", alias)), f.EnnobledAtLTE)
}
if !isZero(f.VillageID) {
q = q.Where(buildConditionArray(addAliasToColumnName("village_id", alias)), pg.Array(f.VillageID))
q = q.Where(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("village_id", alias)), pg.Array(f.VillageID))
}
if !isZero(f.VillageIDNEQ) {
q = q.Where(buildConditionNotInArray(addAliasToColumnName("village_id", alias)), pg.Array(f.VillageIDNEQ))
q = q.Where(gopgutil.BuildConditionNotInArray(gopgutil.AddAliasToColumnName("village_id", alias)), pg.Array(f.VillageIDNEQ))
}
if !isZero(f.NewOwnerID) {
q = q.Where(buildConditionArray(addAliasToColumnName("new_owner_id", alias)), pg.Array(f.NewOwnerID))
q = q.Where(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("new_owner_id", alias)), pg.Array(f.NewOwnerID))
}
if !isZero(f.NewOwnerIDNEQ) {
q = q.Where(buildConditionNotInArray(addAliasToColumnName("new_owner_id", alias)), pg.Array(f.NewOwnerIDNEQ))
q = q.Where(gopgutil.BuildConditionNotInArray(gopgutil.AddAliasToColumnName("new_owner_id", alias)), pg.Array(f.NewOwnerIDNEQ))
}
if !isZero(f.NewOwnerTribeID) {
q = q.Where(buildConditionArray(addAliasToColumnName("new_owner_tribe_id", alias)), pg.Array(f.NewOwnerTribeID))
q = q.Where(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("new_owner_tribe_id", alias)), pg.Array(f.NewOwnerTribeID))
}
if !isZero(f.NewOwnerTribeIDNEQ) {
q = q.Where(buildConditionNotInArray(addAliasToColumnName("new_owner_tribe_id", alias)), pg.Array(f.NewOwnerTribeIDNEQ))
q = q.Where(gopgutil.BuildConditionNotInArray(gopgutil.AddAliasToColumnName("new_owner_tribe_id", alias)), pg.Array(f.NewOwnerTribeIDNEQ))
}
if !isZero(f.OldOwnerID) {
q = q.Where(buildConditionArray(addAliasToColumnName("old_owner_id", alias)), pg.Array(f.OldOwnerID))
q = q.Where(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("old_owner_id", alias)), pg.Array(f.OldOwnerID))
}
if !isZero(f.OldOwnerIDNEQ) {
q = q.Where(buildConditionNotInArray(addAliasToColumnName("old_owner_id", alias)), pg.Array(f.OldOwnerIDNEQ))
q = q.Where(gopgutil.BuildConditionNotInArray(gopgutil.AddAliasToColumnName("old_owner_id", alias)), pg.Array(f.OldOwnerIDNEQ))
}
if !isZero(f.OldOwnerTribeID) {
q = q.Where(buildConditionArray(addAliasToColumnName("old_owner_tribe_id", alias)), pg.Array(f.OldOwnerTribeID))
q = q.Where(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("old_owner_tribe_id", alias)), pg.Array(f.OldOwnerTribeID))
}
if !isZero(f.OldOwnerTribeIDNEQ) {
q = q.Where(buildConditionNotInArray(addAliasToColumnName("old_owner_tribe_id", alias)), pg.Array(f.OldOwnerTribeIDNEQ))
q = q.Where(gopgutil.BuildConditionNotInArray(gopgutil.AddAliasToColumnName("old_owner_tribe_id", alias)), pg.Array(f.OldOwnerTribeIDNEQ))
}
if f.Or != nil {
q = f.Or.WhereWithAlias(q, alias)
}
var err error
if f.NewOwnerFilter != nil {
q, err = f.NewOwnerFilter.WhereWithAlias(q.Relation("NewOwner._"), "new_owner", "NewOwner.Tribe._", "new_owner__tribe")
if err != nil {
return q, err
}
}
if f.NewOwnerTribeFilter != nil {
q, err = f.NewOwnerTribeFilter.WhereWithAlias(q.Relation("NewOwnerTribe._"), "new_owner_tribe")
if err != nil {
return q, err
}
}
if f.OldOwnerFilter != nil {
q, err = f.OldOwnerFilter.WhereWithAlias(q.Relation("OldOwner._"), "old_owner", "OldOwner.Tribe._", "old_owner__tribe")
if err != nil {
return q, err
}
}
if f.OldOwnerTribeFilter != nil {
q, err = f.OldOwnerTribeFilter.WhereWithAlias(q.Relation("OldOwnerTribe._"), "old_owner_tribe")
if err != nil {
return q, err
}
}
if f.VillageFilter != nil {
q, err = f.
VillageFilter.
WhereWithAlias(
q.Relation("Village._"),
"village",
"Village.Player._",
"village__player",
"Village.Player.Tribe._",
"village__player__tribe",
)
if err != nil {
return q, err
}
}
return q, nil
}
func (f *EnnoblementFilter) Where(q *orm.Query) (*orm.Query, error) {
return f.WhereWithAlias(q, "ennoblement")
}
type EnnoblementRelationshipAndSortAppender struct {
Filter *EnnoblementFilter
Sort []string
}
func (a *EnnoblementRelationshipAndSortAppender) Append(q *orm.Query) (*orm.Query, error) {
var err error
villageRequired := findStringWithPrefix(a.Sort, "village.") != ""
if a.Filter.VillageFilter != nil {
q, err = a.Filter.VillageFilter.WhereWithAlias(q, "village")
if err != nil {
return q, err
}
villageRequired = true
}
oldOwnerRequired := findStringWithPrefix(a.Sort, "old_owner.") != ""
if a.Filter.OldOwnerFilter != nil {
q, err = a.Filter.OldOwnerFilter.WhereWithAlias(q, "old_owner")
if err != nil {
return q, err
}
oldOwnerRequired = true
}
oldOwnerTribeRequired := findStringWithPrefix(a.Sort, "old_owner_tribe.") != ""
if a.Filter.OldOwnerTribeFilter != nil {
q, err = a.Filter.OldOwnerTribeFilter.WhereWithAlias(q, "old_owner_tribe")
if err != nil {
return q, err
}
oldOwnerTribeRequired = true
}
newOwnerRequired := findStringWithPrefix(a.Sort, "new_owner.") != ""
if a.Filter.NewOwnerFilter != nil {
q, err = a.Filter.NewOwnerFilter.WhereWithAlias(q, "new_owner")
if err != nil {
return q, err
}
newOwnerRequired = true
}
newOwnerTribeRequired := findStringWithPrefix(a.Sort, "new_owner_tribe.") != ""
if a.Filter.NewOwnerTribeFilter != nil {
q, err = a.Filter.NewOwnerTribeFilter.WhereWithAlias(q, "new_owner_tribe")
if err != nil {
return q, err
}
newOwnerTribeRequired = true
}
if !isZero(a.Sort) {
q = q.Order(a.Sort...)
}
if villageRequired {
q = q.Relation("Village._")
}
if oldOwnerRequired {
q = q.Relation("OldOwner._")
}
if oldOwnerTribeRequired {
q = q.Relation("OldOwnerTribe._")
}
if newOwnerRequired {
q = q.Relation("NewOwner._")
}
if newOwnerTribeRequired {
q = q.Relation("NewOwnerTribe._")
}
return q, nil
}

40
tw/twmodel/helpers.go Normal file
View File

@ -0,0 +1,40 @@
package twmodel
import (
"time"
)
func isZero(v interface{}) bool {
switch c := v.(type) {
case string:
return c == ""
case *string,
[]string,
[]VersionCode,
[]ServerStatus,
*int:
return c == nil
case int:
return c == 0
case []int:
return c == nil
case float64:
return c == 0
case *float64:
return c == nil
case float32:
return c == 0
case *float32:
return c == nil
case bool:
return !c
case *bool:
return c == nil
case time.Time:
return c.IsZero()
case *time.Time:
return c == nil
default:
return false
}
}

View File

@ -0,0 +1,195 @@
package twmodel
import (
"github.com/Kichiyaki/gopgutil/v10"
"github.com/go-pg/pg/v10/orm"
)
type OpponentsDefeated struct {
RankAtt int `json:"rankAtt" pg:",use_zero" gqlgen:"rankAtt"`
ScoreAtt int `pg:",use_zero" json:"scoreAtt" gqlgen:"scoreAtt"`
RankDef int `pg:",use_zero" json:"rankDef" gqlgen:"rankDef"`
ScoreDef int `pg:",use_zero" json:"scoreDef" gqlgen:"scoreDef"`
RankSup int `pg:",use_zero" json:"rankSup,omitempty" gqlgen:"rankSup"`
ScoreSup int `pg:",use_zero" json:"scoreSup,omitempty" gqlgen:"scoreSup"`
RankTotal int `pg:",use_zero" json:"rankTotal" gqlgen:"rankTotal"`
ScoreTotal int `pg:",use_zero" json:"scoreTotal" gqlgen:"scoreTotal"`
}
type OpponentsDefeatedFilter struct {
RankAtt int `json:"rankAtt" gqlgen:"rankAtt"`
RankAttGT int `json:"rankAttGT" gqlgen:"rankAttGT"`
RankAttGTE int `json:"rankAttGTE" gqlgen:"rankAttGTE"`
RankAttLT int `json:"rankAttLT" gqlgen:"rankAttLT"`
RankAttLTE int `json:"rankAttLTE" gqlgen:"rankAttLTE"`
ScoreAtt int `json:"scoreAtt" gqlgen:"scoreAtt"`
ScoreAttGT int `json:"scoreAttGT" gqlgen:"scoreAttGT"`
ScoreAttGTE int `json:"scoreAttGTE" gqlgen:"scoreAttGTE"`
ScoreAttLT int `json:"scoreAttLT" gqlgen:"scoreAttLT"`
ScoreAttLTE int `json:"scoreAttLTE" gqlgen:"scoreAttLTE"`
RankDef int `json:"rankDef" gqlgen:"rankDef"`
RankDefGT int `json:"rankDefGT" gqlgen:"rankDefGT"`
RankDefGTE int `json:"rankDefGTE" gqlgen:"rankDefGTE"`
RankDefLT int `json:"rankDefLT" gqlgen:"rankDefLT"`
RankDefLTE int `json:"rankDefLTE" gqlgen:"rankDefLTE"`
ScoreDef int `json:"scoreDef" gqlgen:"scoreDef"`
ScoreDefGT int `json:"scoreDefGT" gqlgen:"scoreDefGT"`
ScoreDefGTE int `json:"scoreDefGTE" gqlgen:"scoreDefGTE"`
ScoreDefLT int `json:"scoreDefLT" gqlgen:"scoreDefLT"`
ScoreDefLTE int `json:"scoreDefLTE" gqlgen:"scoreDefLTE"`
RankSup int `json:"rankSup,omitempty" gqlgen:"rankSup"`
RankSupGT int `json:"rankSupGT,omitempty" gqlgen:"rankSupGT"`
RankSupGTE int `json:"rankSupGTE,omitempty" gqlgen:"rankSupGTE"`
RankSupLT int `json:"rankSupLT,omitempty" gqlgen:"rankSupLT"`
RankSupLTE int `json:"rankSupLTE,omitempty" gqlgen:"rankSupLTE"`
ScoreSup int `json:"scoreSup,omitempty" gqlgen:"scoreSup"`
ScoreSupGT int `json:"scoreSupGT,omitempty" gqlgen:"scoreSupGT"`
ScoreSupGTE int `json:"scoreSupGTE,omitempty" gqlgen:"scoreSupGTE"`
ScoreSupLT int `json:"scoreSupLT,omitempty" gqlgen:"scoreSupLT"`
ScoreSupLTE int `json:"scoreSupLTE,omitempty" gqlgen:"scoreSupLTE"`
RankTotal int `json:"rankTotal" gqlgen:"rankTotal"`
RankTotalGT int `json:"rankTotalGT" gqlgen:"rankTotalGT"`
RankTotalGTE int `json:"rankTotalGTE" gqlgen:"rankTotalGTE"`
RankTotalLT int `json:"rankTotalLT" gqlgen:"rankTotalLT"`
RankTotalLTE int `json:"rankTotalLTE" gqlgen:"rankTotalLTE"`
ScoreTotal int `json:"scoreTotal" gqlgen:"scoreTotal"`
ScoreTotalGT int `json:"scoreTotalGT" gqlgen:"scoreTotalGT"`
ScoreTotalGTE int `json:"scoreTotalGTE" gqlgen:"scoreTotalGTE"`
ScoreTotalLT int `json:"scoreTotalLT" gqlgen:"scoreTotalLT"`
ScoreTotalLTE int `json:"scoreTotalLTE" gqlgen:"scoreTotalLTE"`
}
func (f *OpponentsDefeatedFilter) WhereWithAlias(q *orm.Query, alias string) (*orm.Query, error) {
if f == nil {
return q, nil
}
if !isZero(f.RankAtt) {
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("rank_att", alias)), f.RankAtt)
}
if !isZero(f.RankAttGT) {
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("rank_att", alias)), f.RankAttGT)
}
if !isZero(f.RankAttGTE) {
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("rank_att", alias)), f.RankAttGTE)
}
if !isZero(f.RankAttLT) {
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("rank_att", alias)), f.RankAttLT)
}
if !isZero(f.RankAttLTE) {
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("rank_att", alias)), f.RankAttLTE)
}
if !isZero(f.ScoreAtt) {
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("score_att", alias)), f.ScoreAtt)
}
if !isZero(f.ScoreAttGT) {
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("score_att", alias)), f.ScoreAttGT)
}
if !isZero(f.ScoreAttGTE) {
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("score_att", alias)), f.ScoreAttGTE)
}
if !isZero(f.ScoreAttLT) {
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("score_att", alias)), f.ScoreAttLT)
}
if !isZero(f.ScoreAttLTE) {
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("score_att", alias)), f.ScoreAttLTE)
}
if !isZero(f.RankDef) {
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("rank_def", alias)), f.RankDef)
}
if !isZero(f.RankDefGT) {
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("rank_def", alias)), f.RankDefGT)
}
if !isZero(f.RankDefGTE) {
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("rank_def", alias)), f.RankDefGTE)
}
if !isZero(f.RankDefLT) {
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("rank_def", alias)), f.RankDefLT)
}
if !isZero(f.RankDefLTE) {
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("rank_def", alias)), f.RankDefLTE)
}
if !isZero(f.ScoreDef) {
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("score_def", alias)), f.ScoreDef)
}
if !isZero(f.ScoreDefGT) {
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("score_def", alias)), f.ScoreDefGT)
}
if !isZero(f.ScoreDefGTE) {
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("score_def", alias)), f.ScoreDefGTE)
}
if !isZero(f.ScoreDefLT) {
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("score_def", alias)), f.ScoreDefLT)
}
if !isZero(f.ScoreDefLTE) {
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("score_def", alias)), f.ScoreDefLTE)
}
if !isZero(f.RankSup) {
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("rank_sup", alias)), f.RankSup)
}
if !isZero(f.RankSupGT) {
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("rank_sup", alias)), f.RankSupGT)
}
if !isZero(f.RankSupGTE) {
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("rank_sup", alias)), f.RankSupGTE)
}
if !isZero(f.RankSupLT) {
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("rank_sup", alias)), f.RankSupLT)
}
if !isZero(f.RankSupLTE) {
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("rank_sup", alias)), f.RankSupLTE)
}
if !isZero(f.ScoreSup) {
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("score_sup", alias)), f.ScoreSup)
}
if !isZero(f.ScoreSupGT) {
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("score_sup", alias)), f.ScoreSupGT)
}
if !isZero(f.ScoreSupGTE) {
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("score_sup", alias)), f.ScoreSupGTE)
}
if !isZero(f.ScoreSupLT) {
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("score_sup", alias)), f.ScoreSupLT)
}
if !isZero(f.ScoreSupLTE) {
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("score_sup", alias)), f.ScoreSupLTE)
}
if !isZero(f.RankTotal) {
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("rank_total", alias)), f.RankTotal)
}
if !isZero(f.RankTotalGT) {
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("rank_total", alias)), f.RankTotalGT)
}
if !isZero(f.RankTotalGTE) {
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("rank_total", alias)), f.RankTotalGTE)
}
if !isZero(f.RankTotalLT) {
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("rank_total", alias)), f.RankTotalLT)
}
if !isZero(f.RankTotalLTE) {
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("rank_total", alias)), f.RankTotalLTE)
}
if !isZero(f.ScoreTotal) {
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("score_total", alias)), f.ScoreTotal)
}
if !isZero(f.ScoreTotalGT) {
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("score_total", alias)), f.ScoreTotalGT)
}
if !isZero(f.ScoreTotalGTE) {
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("score_total", alias)), f.ScoreTotalGTE)
}
if !isZero(f.ScoreTotalLT) {
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("score_total", alias)), f.ScoreTotalLT)
}
if !isZero(f.ScoreTotalLTE) {
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("score_total", alias)), f.ScoreTotalLTE)
}
return q, nil
}

View File

@ -1,6 +1,7 @@
package models
package twmodel
import (
"github.com/Kichiyaki/gopgutil/v10"
"time"
"github.com/go-pg/pg/v10"
@ -8,7 +9,7 @@ import (
)
type Player struct {
tableName struct{} `pg:"?SERVER.players,alias:player" json:"tableName" xml:"tableName" gqlgen:"tableName"`
tableName struct{} `pg:"?SERVER.players,alias:player"`
ID int `json:"id" pg:"type:bigint,pk" gqlgen:"id" xml:"id"`
Name string `json:"name" gqlgen:"name" xml:"name"`
@ -92,182 +93,167 @@ type PlayerFilter struct {
OpponentsDefeatedFilter
}
func (f *PlayerFilter) WhereWithAlias(q *orm.Query, alias string) (*orm.Query, error) {
func (f *PlayerFilter) WhereWithAlias(q *orm.Query, alias, tribeRelationName, tribeAlias string) (*orm.Query, error) {
if f == nil {
return q, nil
}
if !isZero(f.ID) {
q = q.Where(buildConditionArray(addAliasToColumnName("id", alias)), pg.Array(f.ID))
q = q.Where(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("id", alias)), pg.Array(f.ID))
}
if !isZero(f.IDNEQ) {
q = q.Where(buildConditionNotInArray(addAliasToColumnName("id", alias)), pg.Array(f.IDNEQ))
q = q.Where(gopgutil.BuildConditionNotInArray(gopgutil.AddAliasToColumnName("id", alias)), pg.Array(f.IDNEQ))
}
if !isZero(f.Exists) {
q = q.Where(buildConditionEquals(addAliasToColumnName("exists", alias)), f.Exists)
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("exists", alias)), f.Exists)
}
if !isZero(f.Name) {
q = q.Where(buildConditionArray(addAliasToColumnName("name", alias)), pg.Array(f.Name))
q = q.Where(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("name", alias)), pg.Array(f.Name))
}
if !isZero(f.NameNEQ) {
q = q.Where(buildConditionNotInArray(addAliasToColumnName("name", alias)), pg.Array(f.NameNEQ))
q = q.Where(gopgutil.BuildConditionNotInArray(gopgutil.AddAliasToColumnName("name", alias)), pg.Array(f.NameNEQ))
}
if !isZero(f.NameMATCH) {
q = q.Where(buildConditionMatch(addAliasToColumnName("name", alias)), f.NameMATCH)
q = q.Where(gopgutil.BuildConditionMatch(gopgutil.AddAliasToColumnName("name", alias)), f.NameMATCH)
}
if !isZero(f.NameIEQ) {
q = q.Where(buildConditionIEQ(addAliasToColumnName("name", alias)), f.NameIEQ)
q = q.Where(gopgutil.BuildConditionIEQ(gopgutil.AddAliasToColumnName("name", alias)), f.NameIEQ)
}
if !isZero(f.TotalVillages) {
q = q.Where(buildConditionEquals(addAliasToColumnName("total_villages", alias)), f.TotalVillages)
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("total_villages", alias)), f.TotalVillages)
}
if !isZero(f.TotalVillagesGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("total_villages", alias)), f.TotalVillagesGT)
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("total_villages", alias)), f.TotalVillagesGT)
}
if !isZero(f.TotalVillagesGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("total_villages", alias)), f.TotalVillagesGTE)
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("total_villages", alias)), f.TotalVillagesGTE)
}
if !isZero(f.TotalVillagesLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("total_villages", alias)), f.TotalVillagesLT)
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("total_villages", alias)), f.TotalVillagesLT)
}
if !isZero(f.TotalVillagesLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("total_villages", alias)), f.TotalVillagesLTE)
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("total_villages", alias)), f.TotalVillagesLTE)
}
if !isZero(f.Points) {
q = q.Where(buildConditionEquals(addAliasToColumnName("points", alias)), f.Points)
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("points", alias)), f.Points)
}
if !isZero(f.PointsGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("points", alias)), f.PointsGT)
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("points", alias)), f.PointsGT)
}
if !isZero(f.PointsGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("points", alias)), f.PointsGTE)
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("points", alias)), f.PointsGTE)
}
if !isZero(f.PointsLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("points", alias)), f.PointsLT)
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("points", alias)), f.PointsLT)
}
if !isZero(f.PointsLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("points", alias)), f.PointsLTE)
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("points", alias)), f.PointsLTE)
}
if !isZero(f.Rank) {
q = q.Where(buildConditionEquals(addAliasToColumnName("rank", alias)), f.Rank)
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("rank", alias)), f.Rank)
}
if !isZero(f.RankGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("rank", alias)), f.RankGT)
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("rank", alias)), f.RankGT)
}
if !isZero(f.RankGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("rank", alias)), f.RankGTE)
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("rank", alias)), f.RankGTE)
}
if !isZero(f.RankLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("rank", alias)), f.RankLT)
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("rank", alias)), f.RankLT)
}
if !isZero(f.RankLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("rank", alias)), f.RankLTE)
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("rank", alias)), f.RankLTE)
}
if !isZero(f.DailyGrowth) {
q = q.Where(buildConditionEquals(addAliasToColumnName("daily_growth", alias)), f.DailyGrowth)
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("daily_growth", alias)), f.DailyGrowth)
}
if !isZero(f.DailyGrowthGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("daily_growth", alias)), f.DailyGrowthGT)
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("daily_growth", alias)), f.DailyGrowthGT)
}
if !isZero(f.DailyGrowthGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("daily_growth", alias)), f.DailyGrowthGTE)
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("daily_growth", alias)), f.DailyGrowthGTE)
}
if !isZero(f.DailyGrowthLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("daily_growth", alias)), f.DailyGrowthLT)
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("daily_growth", alias)), f.DailyGrowthLT)
}
if !isZero(f.DailyGrowthLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("daily_growth", alias)), f.DailyGrowthLTE)
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("daily_growth", alias)), f.DailyGrowthLTE)
}
if !isZero(f.JoinedAt) {
q = q.Where(buildConditionEquals(addAliasToColumnName("joined_at", alias)), f.JoinedAt)
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("joined_at", alias)), f.JoinedAt)
}
if !isZero(f.JoinedAtGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("joined_at", alias)), f.JoinedAtGT)
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("joined_at", alias)), f.JoinedAtGT)
}
if !isZero(f.JoinedAtGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("joined_at", alias)), f.JoinedAtGTE)
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("joined_at", alias)), f.JoinedAtGTE)
}
if !isZero(f.JoinedAtLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("joined_at", alias)), f.JoinedAtLT)
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("joined_at", alias)), f.JoinedAtLT)
}
if !isZero(f.JoinedAtLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("joined_at", alias)), f.JoinedAtLTE)
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("joined_at", alias)), f.JoinedAtLTE)
}
if !isZero(f.LastActivityAt) {
q = q.Where(buildConditionEquals(addAliasToColumnName("last_activity_at", alias)), f.LastActivityAt)
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("last_activity_at", alias)), f.LastActivityAt)
}
if !isZero(f.LastActivityAtGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("last_activity_at", alias)), f.LastActivityAtGT)
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("last_activity_at", alias)), f.LastActivityAtGT)
}
if !isZero(f.LastActivityAtGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("last_activity_at", alias)), f.LastActivityAtGTE)
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("last_activity_at", alias)), f.LastActivityAtGTE)
}
if !isZero(f.LastActivityAtLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("last_activity_at", alias)), f.LastActivityAtLT)
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("last_activity_at", alias)), f.LastActivityAtLT)
}
if !isZero(f.LastActivityAtLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("last_activity_at", alias)), f.LastActivityAtLTE)
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("last_activity_at", alias)), f.LastActivityAtLTE)
}
if !isZero(f.DeletedAt) {
q = q.Where(buildConditionEquals(addAliasToColumnName("deleted_at", alias)), f.DeletedAt)
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("deleted_at", alias)), f.DeletedAt)
}
if !isZero(f.DeletedAtGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("deleted_at", alias)), f.DeletedAtGT)
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("deleted_at", alias)), f.DeletedAtGT)
}
if !isZero(f.DeletedAtGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("deleted_at", alias)), f.DeletedAtGTE)
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("deleted_at", alias)), f.DeletedAtGTE)
}
if !isZero(f.DeletedAtLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("deleted_at", alias)), f.DeletedAtLT)
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("deleted_at", alias)), f.DeletedAtLT)
}
if !isZero(f.DeletedAtLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("deleted_at", alias)), f.DeletedAtLTE)
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("deleted_at", alias)), f.DeletedAtLTE)
}
if !isZero(f.TribeID) {
q = q.Where(buildConditionArray(addAliasToColumnName("tribe_id", alias)), pg.Array(f.TribeID))
q = q.Where(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("tribe_id", alias)), pg.Array(f.TribeID))
}
if !isZero(f.TribeIDNEQ) {
q = q.Where(buildConditionNotInArray(addAliasToColumnName("tribe_id", alias)), pg.Array(f.TribeIDNEQ))
q = q.Where(gopgutil.BuildConditionNotInArray(gopgutil.AddAliasToColumnName("tribe_id", alias)), pg.Array(f.TribeIDNEQ))
}
var err error
if f.TribeFilter != nil && tribeRelationName != "" {
q, err = f.TribeFilter.WhereWithAlias(q.Relation(tribeRelationName), tribeAlias)
if err != nil {
return nil, err
}
}
return f.OpponentsDefeatedFilter.WhereWithAlias(q, alias)
}
func (f *PlayerFilter) Where(q *orm.Query) (*orm.Query, error) {
return f.WhereWithAlias(q, "player")
}
type PlayerRelationshipAndSortAppender struct {
Filter *PlayerFilter
Sort []string
}
func (a *PlayerRelationshipAndSortAppender) Append(q *orm.Query) (*orm.Query, error) {
var err error
tribeRequired := findStringWithPrefix(a.Sort, "tribe.") != ""
if a.Filter.TribeFilter != nil {
q, err = a.Filter.TribeFilter.WhereWithAlias(q, "tribe")
if err != nil {
return q, err
}
tribeRequired = true
}
if !isZero(a.Sort) {
q = q.Order(a.Sort...)
}
if tribeRequired {
q = q.Relation("Tribe._")
}
return q, nil
return f.WhereWithAlias(q, "player", "Tribe._", "tribe")
}
type FoundPlayer struct {

View File

@ -1,6 +1,7 @@
package models
package twmodel
import (
"github.com/Kichiyaki/gopgutil/v10"
"time"
"github.com/go-pg/pg/v10"
@ -36,27 +37,35 @@ type PlayerHistoryFilter struct {
}
func (f *PlayerHistoryFilter) WhereWithAlias(q *orm.Query, alias string) (*orm.Query, error) {
if f == nil {
return q, nil
}
if !isZero(f.CreateDate) {
q = q.Where(buildConditionEquals(addAliasToColumnName("create_date", alias)), f.CreateDate)
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("create_date", alias)), f.CreateDate)
}
if !isZero(f.CreateDateGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("create_date", alias)), f.CreateDateGT)
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("create_date", alias)), f.CreateDateGT)
}
if !isZero(f.CreateDateGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("create_date", alias)), f.CreateDateGTE)
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("create_date", alias)), f.CreateDateGTE)
}
if !isZero(f.CreateDateLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("create_date", alias)), f.CreateDateLT)
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("create_date", alias)), f.CreateDateLT)
}
if !isZero(f.CreateDateLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("create_date", alias)), f.CreateDateLTE)
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("create_date", alias)), f.CreateDateLTE)
}
if !isZero(f.PlayerID) {
q = q.Where(buildConditionArray(addAliasToColumnName("player_id", alias)), pg.Array(f.PlayerID))
q = q.Where(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("player_id", alias)), pg.Array(f.PlayerID))
}
if !isZero(f.PlayerIDNEQ) {
q = q.Where(buildConditionNotInArray(addAliasToColumnName("player_id", alias)), pg.Array(f.PlayerIDNEQ))
q = q.Where(gopgutil.BuildConditionNotInArray(gopgutil.AddAliasToColumnName("player_id", alias)), pg.Array(f.PlayerIDNEQ))
}
if f.PlayerFilter != nil {
return f.PlayerFilter.WhereWithAlias(q.Relation("Player._"), "player", "Player.Tribe._", "player__tribe")
}
return q, nil
@ -65,42 +74,3 @@ func (f *PlayerHistoryFilter) WhereWithAlias(q *orm.Query, alias string) (*orm.Q
func (f *PlayerHistoryFilter) Where(q *orm.Query) (*orm.Query, error) {
return f.WhereWithAlias(q, "player_history")
}
type PlayerHistoryRelationshipAndSortAppender struct {
Filter *PlayerHistoryFilter
Sort []string
}
func (a *PlayerHistoryRelationshipAndSortAppender) Append(q *orm.Query) (*orm.Query, error) {
var err error
playerRequired := findStringWithPrefix(a.Sort, "player.") != ""
playerTribeRequired := findStringWithPrefix(a.Sort, "player.tribe.") != ""
if a.Filter.PlayerFilter != nil {
q, err = a.Filter.PlayerFilter.WhereWithAlias(q, "player")
if err != nil {
return q, err
}
playerRequired = true
if a.Filter.PlayerFilter.TribeFilter != nil {
q, err = a.Filter.PlayerFilter.WhereWithAlias(q, "tribe")
if err != nil {
return q, err
}
playerTribeRequired = true
}
}
if !isZero(a.Sort) {
q = q.Order(a.Sort...)
}
if playerRequired {
q = q.Relation("Player._")
}
if playerTribeRequired {
q = q.Join("LEFT JOIN ?SERVER.tribes AS tribe ON tribe.id = player.tribe_id")
}
return q, nil
}

View File

@ -1,4 +1,4 @@
package models
package twmodel
import "time"

View File

@ -1,4 +1,4 @@
package models
package twmodel
type PlayerToServer struct {
ID int `json:"id" gqlgen:"id" xml:"id"`

View File

@ -1,7 +1,8 @@
package models
package twmodel
import (
"fmt"
"github.com/Kichiyaki/gopgutil/v10"
"io"
"strconv"
"strings"
@ -83,31 +84,35 @@ type ServerFilter struct {
}
func (f *ServerFilter) WhereWithAlias(q *orm.Query, alias string) (*orm.Query, error) {
if f == nil {
return q, nil
}
if !isZero(f.Key) {
q = q.Where(buildConditionArray(addAliasToColumnName("key", alias)), pg.Array(f.Key))
q = q.Where(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("key", alias)), pg.Array(f.Key))
}
if !isZero(f.KeyNEQ) {
q = q.Where(buildConditionNotInArray(addAliasToColumnName("key", alias)), pg.Array(f.KeyNEQ))
q = q.Where(gopgutil.BuildConditionNotInArray(gopgutil.AddAliasToColumnName("key", alias)), pg.Array(f.KeyNEQ))
}
if !isZero(f.KeyMATCH) {
q = q.Where(buildConditionMatch(addAliasToColumnName("key", alias)), f.KeyMATCH)
q = q.Where(gopgutil.BuildConditionMatch(gopgutil.AddAliasToColumnName("key", alias)), f.KeyMATCH)
}
if !isZero(f.KeyIEQ) {
q = q.Where(buildConditionIEQ(addAliasToColumnName("key", alias)), f.KeyIEQ)
q = q.Where(gopgutil.BuildConditionIEQ(gopgutil.AddAliasToColumnName("key", alias)), f.KeyIEQ)
}
if !isZero(f.Status) {
q = q.Where(buildConditionArray(addAliasToColumnName("status", alias)), pg.Array(f.Status))
q = q.Where(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("status", alias)), pg.Array(f.Status))
}
if !isZero(f.StatusNEQ) {
q = q.Where(buildConditionNotInArray(addAliasToColumnName("status", alias)), pg.Array(f.StatusNEQ))
q = q.Where(gopgutil.BuildConditionNotInArray(gopgutil.AddAliasToColumnName("status", alias)), pg.Array(f.StatusNEQ))
}
if !isZero(f.VersionCode) {
q = q.Where(buildConditionArray(addAliasToColumnName("version_code", alias)), pg.Array(f.VersionCode))
q = q.Where(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("version_code", alias)), pg.Array(f.VersionCode))
}
if !isZero(f.VersionCodeNEQ) {
q = q.Where(buildConditionNotInArray(addAliasToColumnName("version_code", alias)), pg.Array(f.VersionCodeNEQ))
q = q.Where(gopgutil.BuildConditionNotInArray(gopgutil.AddAliasToColumnName("version_code", alias)), pg.Array(f.VersionCodeNEQ))
}
return q, nil

View File

@ -1,4 +1,4 @@
package models
package twmodel
import "encoding/xml"

View File

@ -1,7 +1,8 @@
package models
package twmodel
import (
"context"
"github.com/Kichiyaki/gopgutil/v10"
"time"
"github.com/go-pg/pg/v10/orm"
@ -41,20 +42,24 @@ type ServerStatsFilter struct {
}
func (f *ServerStatsFilter) WhereWithAlias(q *orm.Query, alias string) (*orm.Query, error) {
if f == nil {
return q, nil
}
if !isZero(f.CreateDate) {
q = q.Where(buildConditionEquals(addAliasToColumnName("create_date", alias)), f.CreateDate)
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("create_date", alias)), f.CreateDate)
}
if !isZero(f.CreateDateGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("create_date", alias)), f.CreateDateGT)
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("create_date", alias)), f.CreateDateGT)
}
if !isZero(f.CreateDateGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("create_date", alias)), f.CreateDateGTE)
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("create_date", alias)), f.CreateDateGTE)
}
if !isZero(f.CreateDateLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("create_date", alias)), f.CreateDateLT)
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("create_date", alias)), f.CreateDateLT)
}
if !isZero(f.CreateDateLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("create_date", alias)), f.CreateDateLTE)
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("create_date", alias)), f.CreateDateLTE)
}
return q, nil

View File

@ -1,4 +1,4 @@
package models
package twmodel
type SpecialServer struct {
tableName struct{} `pg:"special_servers,alias:special_server"`

View File

@ -1,6 +1,7 @@
package models
package twmodel
import (
"github.com/Kichiyaki/gopgutil/v10"
"time"
"github.com/go-pg/pg/v10"
@ -41,24 +42,26 @@ type TribeFilterOr struct {
}
func (f *TribeFilterOr) WhereWithAlias(q *orm.Query, alias string) *orm.Query {
q = q.WhereGroup(func(q *orm.Query) (*orm.Query, error) {
if !isZero(f.ID) {
q = q.WhereOr(buildConditionArray(addAliasToColumnName("id", alias)), pg.Array(f.ID))
}
if !isZero(f.Tag) {
q = q.WhereOr(buildConditionArray(addAliasToColumnName("tag", alias)), pg.Array(f.Tag))
}
if !isZero(f.TagIEQ) {
q = q.WhereOr(buildConditionIEQ(addAliasToColumnName("tag", alias)), f.TagIEQ)
}
if !isZero(f.Name) {
q = q.WhereOr(buildConditionArray(addAliasToColumnName("name", alias)), pg.Array(f.Name))
}
if !isZero(f.NameIEQ) {
q = q.WhereOr(buildConditionIEQ(addAliasToColumnName("name", alias)), f.NameIEQ)
}
return q, nil
})
if f != nil {
q = q.WhereGroup(func(q *orm.Query) (*orm.Query, error) {
if !isZero(f.ID) {
q = q.WhereOr(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("id", alias)), pg.Array(f.ID))
}
if !isZero(f.Tag) {
q = q.WhereOr(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("tag", alias)), pg.Array(f.Tag))
}
if !isZero(f.TagIEQ) {
q = q.WhereOr(gopgutil.BuildConditionIEQ(gopgutil.AddAliasToColumnName("tag", alias)), f.TagIEQ)
}
if !isZero(f.Name) {
q = q.WhereOr(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("name", alias)), pg.Array(f.Name))
}
if !isZero(f.NameIEQ) {
q = q.WhereOr(gopgutil.BuildConditionIEQ(gopgutil.AddAliasToColumnName("name", alias)), f.NameIEQ)
}
return q, nil
})
}
return q
}
@ -131,169 +134,173 @@ type TribeFilter struct {
}
func (f *TribeFilter) WhereWithAlias(q *orm.Query, alias string) (*orm.Query, error) {
if f == nil {
return q, nil
}
if !isZero(f.ID) {
q = q.Where(buildConditionArray(addAliasToColumnName("id", alias)), pg.Array(f.ID))
q = q.Where(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("id", alias)), pg.Array(f.ID))
}
if !isZero(f.IDNEQ) {
q = q.Where(buildConditionNotInArray(addAliasToColumnName("id", alias)), pg.Array(f.IDNEQ))
q = q.Where(gopgutil.BuildConditionNotInArray(gopgutil.AddAliasToColumnName("id", alias)), pg.Array(f.IDNEQ))
}
if !isZero(f.Exists) {
q = q.Where(buildConditionEquals(addAliasToColumnName("exists", alias)), f.Exists)
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("exists", alias)), f.Exists)
}
if !isZero(f.Tag) {
q = q.Where(buildConditionArray(addAliasToColumnName("tag", alias)), pg.Array(f.Tag))
q = q.Where(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("tag", alias)), pg.Array(f.Tag))
}
if !isZero(f.TagNEQ) {
q = q.Where(buildConditionNotInArray(addAliasToColumnName("tag", alias)), pg.Array(f.TagNEQ))
q = q.Where(gopgutil.BuildConditionNotInArray(gopgutil.AddAliasToColumnName("tag", alias)), pg.Array(f.TagNEQ))
}
if !isZero(f.TagMATCH) {
q = q.Where(buildConditionMatch(addAliasToColumnName("tag", alias)), f.TagMATCH)
q = q.Where(gopgutil.BuildConditionMatch(gopgutil.AddAliasToColumnName("tag", alias)), f.TagMATCH)
}
if !isZero(f.TagIEQ) {
q = q.Where(buildConditionIEQ(addAliasToColumnName("tag", alias)), f.TagIEQ)
q = q.Where(gopgutil.BuildConditionIEQ(gopgutil.AddAliasToColumnName("tag", alias)), f.TagIEQ)
}
if !isZero(f.Name) {
q = q.Where(buildConditionArray(addAliasToColumnName("name", alias)), pg.Array(f.Name))
q = q.Where(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("name", alias)), pg.Array(f.Name))
}
if !isZero(f.NameNEQ) {
q = q.Where(buildConditionNotInArray(addAliasToColumnName("name", alias)), pg.Array(f.NameNEQ))
q = q.Where(gopgutil.BuildConditionNotInArray(gopgutil.AddAliasToColumnName("name", alias)), pg.Array(f.NameNEQ))
}
if !isZero(f.NameMATCH) {
q = q.Where(buildConditionMatch(addAliasToColumnName("name", alias)), f.NameMATCH)
q = q.Where(gopgutil.BuildConditionMatch(gopgutil.AddAliasToColumnName("name", alias)), f.NameMATCH)
}
if !isZero(f.NameIEQ) {
q = q.Where(buildConditionIEQ(addAliasToColumnName("name", alias)), f.NameIEQ)
q = q.Where(gopgutil.BuildConditionIEQ(gopgutil.AddAliasToColumnName("name", alias)), f.NameIEQ)
}
if !isZero(f.TotalMembers) {
q = q.Where(buildConditionEquals(addAliasToColumnName("total_members", alias)), f.TotalMembers)
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("total_members", alias)), f.TotalMembers)
}
if !isZero(f.TotalMembersGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("total_members", alias)), f.TotalMembersGT)
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("total_members", alias)), f.TotalMembersGT)
}
if !isZero(f.TotalMembersGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("total_members", alias)), f.TotalMembersGTE)
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("total_members", alias)), f.TotalMembersGTE)
}
if !isZero(f.TotalMembersLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("total_members", alias)), f.TotalMembersLT)
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("total_members", alias)), f.TotalMembersLT)
}
if !isZero(f.TotalMembersLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("total_members", alias)), f.TotalMembersLTE)
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("total_members", alias)), f.TotalMembersLTE)
}
if !isZero(f.TotalVillages) {
q = q.Where(buildConditionEquals(addAliasToColumnName("total_villages", alias)), f.TotalVillages)
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("total_villages", alias)), f.TotalVillages)
}
if !isZero(f.TotalVillagesGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("total_villages", alias)), f.TotalVillagesGT)
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("total_villages", alias)), f.TotalVillagesGT)
}
if !isZero(f.TotalVillagesGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("total_villages", alias)), f.TotalVillagesGTE)
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("total_villages", alias)), f.TotalVillagesGTE)
}
if !isZero(f.TotalVillagesLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("total_villages", alias)), f.TotalVillagesLT)
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("total_villages", alias)), f.TotalVillagesLT)
}
if !isZero(f.TotalVillagesLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("total_villages", alias)), f.TotalVillagesLTE)
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("total_villages", alias)), f.TotalVillagesLTE)
}
if !isZero(f.Points) {
q = q.Where(buildConditionEquals(addAliasToColumnName("points", alias)), f.Points)
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("points", alias)), f.Points)
}
if !isZero(f.PointsGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("points", alias)), f.PointsGT)
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("points", alias)), f.PointsGT)
}
if !isZero(f.PointsGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("points", alias)), f.PointsGTE)
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("points", alias)), f.PointsGTE)
}
if !isZero(f.PointsLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("points", alias)), f.PointsLT)
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("points", alias)), f.PointsLT)
}
if !isZero(f.PointsLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("points", alias)), f.PointsLTE)
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("points", alias)), f.PointsLTE)
}
if !isZero(f.AllPoints) {
q = q.Where(buildConditionEquals(addAliasToColumnName("all_points", alias)), f.AllPoints)
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("all_points", alias)), f.AllPoints)
}
if !isZero(f.AllPointsGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("all_points", alias)), f.AllPointsGT)
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("all_points", alias)), f.AllPointsGT)
}
if !isZero(f.AllPointsGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("all_points", alias)), f.AllPointsGTE)
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("all_points", alias)), f.AllPointsGTE)
}
if !isZero(f.AllPointsLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("all_points", alias)), f.AllPointsLT)
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("all_points", alias)), f.AllPointsLT)
}
if !isZero(f.AllPointsLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("all_points", alias)), f.AllPointsLTE)
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("all_points", alias)), f.AllPointsLTE)
}
if !isZero(f.Rank) {
q = q.Where(buildConditionEquals(addAliasToColumnName("rank", alias)), f.Rank)
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("rank", alias)), f.Rank)
}
if !isZero(f.RankGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("rank", alias)), f.RankGT)
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("rank", alias)), f.RankGT)
}
if !isZero(f.RankGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("rank", alias)), f.RankGTE)
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("rank", alias)), f.RankGTE)
}
if !isZero(f.RankLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("rank", alias)), f.RankLT)
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("rank", alias)), f.RankLT)
}
if !isZero(f.RankLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("rank", alias)), f.RankLTE)
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("rank", alias)), f.RankLTE)
}
if !isZero(f.Dominance) {
q = q.Where(buildConditionEquals(addAliasToColumnName("dominance", alias)), f.Dominance)
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("dominance", alias)), f.Dominance)
}
if !isZero(f.DominanceGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("dominance", alias)), f.DominanceGT)
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("dominance", alias)), f.DominanceGT)
}
if !isZero(f.DominanceGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("dominance", alias)), f.DominanceGTE)
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("dominance", alias)), f.DominanceGTE)
}
if !isZero(f.DominanceLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("dominance", alias)), f.DominanceLT)
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("dominance", alias)), f.DominanceLT)
}
if !isZero(f.DominanceLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("dominance", alias)), f.DominanceLTE)
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("dominance", alias)), f.DominanceLTE)
}
if !isZero(f.CreatedAt) {
q = q.Where(buildConditionEquals(addAliasToColumnName("created_at", alias)), f.CreatedAt)
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("created_at", alias)), f.CreatedAt)
}
if !isZero(f.CreatedAtGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("created_at", alias)), f.CreatedAtGT)
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("created_at", alias)), f.CreatedAtGT)
}
if !isZero(f.CreatedAtGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("created_at", alias)), f.CreatedAtGTE)
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("created_at", alias)), f.CreatedAtGTE)
}
if !isZero(f.CreatedAtLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("created_at", alias)), f.CreatedAtLT)
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("created_at", alias)), f.CreatedAtLT)
}
if !isZero(f.CreatedAtLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("created_at", alias)), f.CreatedAtLTE)
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("created_at", alias)), f.CreatedAtLTE)
}
if !isZero(f.DeletedAt) {
q = q.Where(buildConditionEquals(addAliasToColumnName("deleted_at", alias)), f.DeletedAt)
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("deleted_at", alias)), f.DeletedAt)
}
if !isZero(f.DeletedAtGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("deleted_at", alias)), f.DeletedAtGT)
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("deleted_at", alias)), f.DeletedAtGT)
}
if !isZero(f.DeletedAtGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("deleted_at", alias)), f.DeletedAtGTE)
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("deleted_at", alias)), f.DeletedAtGTE)
}
if !isZero(f.DeletedAtLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("deleted_at", alias)), f.DeletedAtLT)
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("deleted_at", alias)), f.DeletedAtLT)
}
if !isZero(f.DeletedAtLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("deleted_at", alias)), f.DeletedAtLTE)
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("deleted_at", alias)), f.DeletedAtLTE)
}
if f.Or != nil {

View File

@ -1,6 +1,7 @@
package models
package twmodel
import (
"github.com/Kichiyaki/gopgutil/v10"
"time"
"github.com/go-pg/pg/v10"
@ -26,15 +27,17 @@ type TribeChangeFilterOr struct {
}
func (f *TribeChangeFilterOr) WhereWithAlias(q *orm.Query, alias string) *orm.Query {
q = q.WhereGroup(func(q *orm.Query) (*orm.Query, error) {
if !isZero(f.OldTribeID) {
q = q.WhereOr(buildConditionArray(addAliasToColumnName("old_tribe_id", alias)), pg.Array(f.OldTribeID))
}
if !isZero(f.NewTribeID) {
q = q.WhereOr(buildConditionArray(addAliasToColumnName("new_tribe_id", alias)), pg.Array(f.NewTribeID))
}
return q, nil
})
if f != nil {
q = q.WhereGroup(func(q *orm.Query) (*orm.Query, error) {
if !isZero(f.OldTribeID) {
q = q.WhereOr(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("old_tribe_id", alias)), pg.Array(f.OldTribeID))
}
if !isZero(f.NewTribeID) {
q = q.WhereOr(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("new_tribe_id", alias)), pg.Array(f.NewTribeID))
}
return q, nil
})
}
return q
}
@ -61,41 +64,64 @@ type TribeChangeFilter struct {
}
func (f *TribeChangeFilter) WhereWithAlias(q *orm.Query, alias string) (*orm.Query, error) {
if f == nil {
return q, nil
}
var err error
if !isZero(f.PlayerID) {
q = q.Where(buildConditionArray(addAliasToColumnName("player_id", alias)), pg.Array(f.PlayerID))
q = q.Where(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("player_id", alias)), pg.Array(f.PlayerID))
}
if !isZero(f.PlayerIDNEQ) {
q = q.Where(buildConditionNotInArray(addAliasToColumnName("player_id", alias)), pg.Array(f.PlayerIDNEQ))
q = q.Where(gopgutil.BuildConditionNotInArray(gopgutil.AddAliasToColumnName("player_id", alias)), pg.Array(f.PlayerIDNEQ))
}
if f.PlayerFilter != nil {
q, err = f.PlayerFilter.WhereWithAlias(q.Relation("Player._"), "player", "Player.Tribe._", "player__tribe")
if err != nil {
return nil, err
}
}
if !isZero(f.OldTribeID) {
q = q.Where(buildConditionArray(addAliasToColumnName("old_tribe_id", alias)), pg.Array(f.OldTribeID))
q = q.Where(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("old_tribe_id", alias)), pg.Array(f.OldTribeID))
}
if !isZero(f.OldTribeIDNEQ) {
q = q.Where(buildConditionNotInArray(addAliasToColumnName("old_tribe_id", alias)), pg.Array(f.OldTribeIDNEQ))
q = q.Where(gopgutil.BuildConditionNotInArray(gopgutil.AddAliasToColumnName("old_tribe_id", alias)), pg.Array(f.OldTribeIDNEQ))
}
if f.OldTribeFilter != nil {
q, err = f.OldTribeFilter.WhereWithAlias(q.Relation("OldTribe._"), "old_tribe")
if err != nil {
return nil, err
}
}
if !isZero(f.NewTribeID) {
q = q.Where(buildConditionArray(addAliasToColumnName("new_tribe_id", alias)), pg.Array(f.NewTribeID))
q = q.Where(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("new_tribe_id", alias)), pg.Array(f.NewTribeID))
}
if !isZero(f.NewTribeIDNEQ) {
q = q.Where(buildConditionNotInArray(addAliasToColumnName("new_tribe_id", alias)), pg.Array(f.NewTribeIDNEQ))
q = q.Where(gopgutil.BuildConditionNotInArray(gopgutil.AddAliasToColumnName("new_tribe_id", alias)), pg.Array(f.NewTribeIDNEQ))
}
if f.NewTribeFilter != nil {
q, err = f.NewTribeFilter.WhereWithAlias(q.Relation("NewTribe._"), "new_tribe")
if err != nil {
return nil, err
}
}
if !isZero(f.CreatedAt) {
q = q.Where(buildConditionEquals(addAliasToColumnName("created_at", alias)), f.CreatedAt)
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("created_at", alias)), f.CreatedAt)
}
if !isZero(f.CreatedAtGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("created_at", alias)), f.CreatedAtGT)
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("created_at", alias)), f.CreatedAtGT)
}
if !isZero(f.CreatedAtGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("created_at", alias)), f.CreatedAtGTE)
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("created_at", alias)), f.CreatedAtGTE)
}
if !isZero(f.CreatedAtLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("created_at", alias)), f.CreatedAtLT)
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("created_at", alias)), f.CreatedAtLT)
}
if !isZero(f.CreatedAtLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("created_at", alias)), f.CreatedAtLTE)
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("created_at", alias)), f.CreatedAtLTE)
}
if f.Or != nil {
@ -108,54 +134,3 @@ func (f *TribeChangeFilter) WhereWithAlias(q *orm.Query, alias string) (*orm.Que
func (f *TribeChangeFilter) Where(q *orm.Query) (*orm.Query, error) {
return f.WhereWithAlias(q, "tribe_change")
}
type TribeChangeRelationshipAndSortAppender struct {
Filter *TribeChangeFilter
Sort []string
}
func (a *TribeChangeRelationshipAndSortAppender) Append(q *orm.Query) (*orm.Query, error) {
var err error
playerRequired := findStringWithPrefix(a.Sort, "player.") != ""
if a.Filter.PlayerFilter != nil {
q, err = a.Filter.PlayerFilter.WhereWithAlias(q, "player")
if err != nil {
return q, err
}
playerRequired = true
}
oldTribeRequired := findStringWithPrefix(a.Sort, "old_tribe.") != ""
if a.Filter.OldTribeFilter != nil {
q, err = a.Filter.OldTribeFilter.WhereWithAlias(q, "old_tribe")
if err != nil {
return q, err
}
oldTribeRequired = true
}
newTribeRequired := findStringWithPrefix(a.Sort, "new_tribe.") != ""
if a.Filter.NewTribeFilter != nil {
q, err = a.Filter.NewTribeFilter.WhereWithAlias(q, "new_tribe")
if err != nil {
return q, err
}
newTribeRequired = true
}
if !isZero(a.Sort) {
q = q.Order(a.Sort...)
}
if playerRequired {
q = q.Relation("Tribe._")
}
if oldTribeRequired {
q = q.Relation("OldTribe._")
}
if newTribeRequired {
q = q.Relation("NewTribe._")
}
return q, nil
}

View File

@ -1,6 +1,7 @@
package models
package twmodel
import (
"github.com/Kichiyaki/gopgutil/v10"
"time"
"github.com/go-pg/pg/v10"
@ -37,27 +38,34 @@ type TribeHistoryFilter struct {
}
func (f *TribeHistoryFilter) WhereWithAlias(q *orm.Query, alias string) (*orm.Query, error) {
if f == nil {
return q, nil
}
if !isZero(f.CreateDate) {
q = q.Where(buildConditionEquals(addAliasToColumnName("create_date", alias)), f.CreateDate)
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("create_date", alias)), f.CreateDate)
}
if !isZero(f.CreateDateGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("create_date", alias)), f.CreateDateGT)
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("create_date", alias)), f.CreateDateGT)
}
if !isZero(f.CreateDateGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("create_date", alias)), f.CreateDateGTE)
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("create_date", alias)), f.CreateDateGTE)
}
if !isZero(f.CreateDateLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("create_date", alias)), f.CreateDateLT)
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("create_date", alias)), f.CreateDateLT)
}
if !isZero(f.CreateDateLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("create_date", alias)), f.CreateDateLTE)
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("create_date", alias)), f.CreateDateLTE)
}
if !isZero(f.TribeID) {
q = q.Where(buildConditionArray(addAliasToColumnName("tribe_id", alias)), pg.Array(f.TribeID))
q = q.Where(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("tribe_id", alias)), pg.Array(f.TribeID))
}
if !isZero(f.TribeIDNEQ) {
q = q.Where(buildConditionNotInArray(addAliasToColumnName("tribe_id", alias)), pg.Array(f.TribeIDNEQ))
q = q.Where(gopgutil.BuildConditionNotInArray(gopgutil.AddAliasToColumnName("tribe_id", alias)), pg.Array(f.TribeIDNEQ))
}
if f.TribeFilter != nil {
return f.TribeFilter.WhereWithAlias(q.Relation("Tribe"), "tribe")
}
return q, nil
@ -66,30 +74,3 @@ func (f *TribeHistoryFilter) WhereWithAlias(q *orm.Query, alias string) (*orm.Qu
func (f *TribeHistoryFilter) Where(q *orm.Query) (*orm.Query, error) {
return f.WhereWithAlias(q, "tribe_history")
}
type TribeHistoryRelationshipAndSortAppender struct {
Filter *TribeHistoryFilter
Sort []string
}
func (a *TribeHistoryRelationshipAndSortAppender) Append(q *orm.Query) (*orm.Query, error) {
var err error
tribeRequired := findStringWithPrefix(a.Sort, "tribe.") != ""
if a.Filter.TribeFilter != nil {
q, err = a.Filter.TribeFilter.WhereWithAlias(q, "tribe")
if err != nil {
return q, err
}
tribeRequired = true
}
if !isZero(a.Sort) {
q = q.Order(a.Sort...)
}
if tribeRequired {
q = q.Relation("Tribe._")
}
return q, nil
}

View File

@ -1,4 +1,4 @@
package models
package twmodel
import "encoding/xml"

View File

@ -1,7 +1,8 @@
package models
package twmodel
import (
"fmt"
"github.com/Kichiyaki/gopgutil/v10"
"io"
"strconv"
"strings"
@ -34,6 +35,13 @@ const (
VersionCodeSK VersionCode = "sk"
)
func VersionCodeFromServerKey(key string) VersionCode {
if len(key) < 2 {
return ""
}
return VersionCode(key[0:2])
}
func (vc VersionCode) IsValid() bool {
switch vc {
case VersionCodePL,
@ -102,24 +110,28 @@ type VersionFilter struct {
}
func (f *VersionFilter) WhereWithAlias(q *orm.Query, alias string) (*orm.Query, error) {
if f == nil {
return q, nil
}
if !isZero(f.Code) {
q = q.Where(buildConditionArray(addAliasToColumnName("code", alias)), pg.Array(f.Code))
q = q.Where(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("code", alias)), pg.Array(f.Code))
}
if !isZero(f.CodeNEQ) {
q = q.Where(buildConditionNotInArray(addAliasToColumnName("code", alias)), pg.Array(f.CodeNEQ))
q = q.Where(gopgutil.BuildConditionNotInArray(gopgutil.AddAliasToColumnName("code", alias)), pg.Array(f.CodeNEQ))
}
if !isZero(f.Host) {
q = q.Where(buildConditionArray(addAliasToColumnName("host", alias)), pg.Array(f.Host))
q = q.Where(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("host", alias)), pg.Array(f.Host))
}
if !isZero(f.HostNEQ) {
q = q.Where(buildConditionNotInArray(addAliasToColumnName("host", alias)), pg.Array(f.HostNEQ))
q = q.Where(gopgutil.BuildConditionNotInArray(gopgutil.AddAliasToColumnName("host", alias)), pg.Array(f.HostNEQ))
}
if !isZero(f.HostMATCH) {
q = q.Where(buildConditionMatch(addAliasToColumnName("host", alias)), f.HostMATCH)
q = q.Where(gopgutil.BuildConditionMatch(gopgutil.AddAliasToColumnName("host", alias)), f.HostMATCH)
}
if !isZero(f.HostIEQ) {
q = q.Where(buildConditionIEQ(addAliasToColumnName("host", alias)), f.HostIEQ)
q = q.Where(gopgutil.BuildConditionIEQ(gopgutil.AddAliasToColumnName("host", alias)), f.HostIEQ)
}
return q, nil

199
tw/twmodel/village.go Normal file
View File

@ -0,0 +1,199 @@
package twmodel
import (
"fmt"
"github.com/Kichiyaki/gopgutil/v10"
"github.com/go-pg/pg/v10"
"github.com/go-pg/pg/v10/orm"
"strconv"
)
type Village struct {
tableName struct{} `pg:"?SERVER.villages,alias:village"`
ID int `json:"id" pg:"type:bigint,pk" gqlgen:"id"`
Name string `json:"name" gqlgen:"name"`
Points int `json:"points" pg:",use_zero" gqlgen:"points"`
X int `json:"x" pg:",use_zero" gqlgen:"x"`
Y int `json:"y" pg:",use_zero" gqlgen:"y"`
Bonus int `json:"bonus" pg:",use_zero" gqlgen:"bonus"`
PlayerID int `json:"-" pg:",use_zero" gqlgen:"playerID"`
Player *Player `json:"player,omitempty" gqlgen:"-" pg:"rel:has-one"`
}
func (v *Village) Continent() string {
if v == nil {
return ""
}
return fmt.Sprintf("K%c%c", strconv.FormatInt(int64(v.Y), 10)[0], strconv.FormatInt(int64(v.X), 10)[0])
}
func (v *Village) FullName() string {
return fmt.Sprintf("%s (%d|%d) %s",
v.Name,
v.X,
v.Y,
v.Continent())
}
type VillageFilter struct {
ID []int `json:"id" gqlgen:"id"`
IDNEQ []int `json:"idNEQ" gqlgen:"idNEQ"`
Name []string `json:"name" gqlgen:"name"`
NameNEQ []string `json:"nameNEQ" gqlgen:"nameNEQ"`
NameMATCH string `json:"nameMATCH" gqlgen:"nameMATCH"`
NameIEQ string `json:"nameIEQ" gqlgen:"nameIEQ"`
XGT int `json:"xGT" gqlgen:"xGT"`
XGTE int `json:"xGTE" gqlgen:"xGTE"`
XLT int `json:"xLT" gqlgen:"xLT"`
XLTE int `json:"xLTE" gqlgen:"xLTE"`
YGT int `json:"yGT" gqlgen:"yGT"`
YGTE int `json:"yGTE" gqlgen:"yGTE"`
YLT int `json:"yLT" gqlgen:"yLT"`
YLTE int `json:"yLTE" gqlgen:"yLTE"`
XY []string `json:"xy" gqlgen:"xy"`
Points int `json:"points" gqlgen:"points"`
PointsGT int `json:"pointsGT" gqlgen:"pointsGT"`
PointsGTE int `json:"pointsGTE" gqlgen:"pointsGTE"`
PointsLT int `json:"pointsLT" gqlgen:"pointsLT"`
PointsLTE int `json:"pointsLTE" gqlgen:"pointsLTE"`
Bonus int `json:"bonus" gqlgen:"bonus"`
BonusGT int `json:"bonusGT" gqlgen:"bonusGT"`
BonusGTE int `json:"bonusGTE" gqlgen:"bonusGTE"`
BonusLT int `json:"bonusLT" gqlgen:"bonusLT"`
BonusLTE int `json:"bonusLTE" gqlgen:"bonusLTE"`
PlayerID []int `json:"playerID" gqlgen:"playerID"`
PlayerIDNEQ []int `json:"playerIDNEQ" gqlgen:"playerIDNEQ"`
PlayerFilter *PlayerFilter `json:"playerFilter" gqlgen:"playerFilter"`
}
func (f *VillageFilter) WhereWithAlias(q *orm.Query, alias, playerRelationName, playerAlias, tribeRelationName, tribeAlias string) (*orm.Query, error) {
if f == nil {
return q, nil
}
if !isZero(f.ID) {
q = q.Where(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("id", alias)), pg.Array(f.ID))
}
if !isZero(f.IDNEQ) {
q = q.Where(gopgutil.BuildConditionNotInArray(gopgutil.AddAliasToColumnName("id", alias)), pg.Array(f.IDNEQ))
}
if !isZero(f.Name) {
q = q.Where(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("name", alias)), pg.Array(f.Name))
}
if !isZero(f.NameNEQ) {
q = q.Where(gopgutil.BuildConditionNotInArray(gopgutil.AddAliasToColumnName("name", alias)), pg.Array(f.NameNEQ))
}
if !isZero(f.NameMATCH) {
q = q.Where(gopgutil.BuildConditionMatch(gopgutil.AddAliasToColumnName("name", alias)), f.NameMATCH)
}
if !isZero(f.NameIEQ) {
q = q.Where(gopgutil.BuildConditionIEQ(gopgutil.AddAliasToColumnName("name", alias)), f.NameIEQ)
}
if !isZero(f.XGT) {
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("x", alias)), f.XGT)
}
if !isZero(f.XGTE) {
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("x", alias)), f.XGTE)
}
if !isZero(f.XLT) {
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("x", alias)), f.XLT)
}
if !isZero(f.XLTE) {
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("x", alias)), f.XLTE)
}
if !isZero(f.YGT) {
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("y", alias)), f.YGT)
}
if !isZero(f.YGTE) {
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("y", alias)), f.YGTE)
}
if !isZero(f.YLT) {
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("y", alias)), f.YLT)
}
if !isZero(f.YLTE) {
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("y", alias)), f.YLTE)
}
if !isZero(f.XY) {
q = q.WhereGroup(func(q *orm.Query) (*orm.Query, error) {
for _, xy := range f.XY {
parsed, err := ParseCoords(xy)
if err != nil {
continue
}
q = q.WhereOrGroup(func(q *orm.Query) (*orm.Query, error) {
q = q.Where("x = ?", parsed.X)
q = q.Where("y = ?", parsed.Y)
return q, nil
})
}
return q, nil
})
}
if !isZero(f.Points) {
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("points", alias)), f.Points)
}
if !isZero(f.PointsGT) {
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("points", alias)), f.PointsGT)
}
if !isZero(f.PointsGTE) {
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("points", alias)), f.PointsGTE)
}
if !isZero(f.PointsLT) {
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("points", alias)), f.PointsLT)
}
if !isZero(f.PointsLTE) {
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("points", alias)), f.PointsLTE)
}
if !isZero(f.Bonus) {
q = q.Where(gopgutil.BuildConditionEquals(gopgutil.AddAliasToColumnName("bonus", alias)), f.Bonus)
}
if !isZero(f.BonusGT) {
q = q.Where(gopgutil.BuildConditionGT(gopgutil.AddAliasToColumnName("bonus", alias)), f.BonusGT)
}
if !isZero(f.BonusGTE) {
q = q.Where(gopgutil.BuildConditionGTE(gopgutil.AddAliasToColumnName("bonus", alias)), f.BonusGTE)
}
if !isZero(f.BonusLT) {
q = q.Where(gopgutil.BuildConditionLT(gopgutil.AddAliasToColumnName("bonus", alias)), f.BonusLT)
}
if !isZero(f.BonusLTE) {
q = q.Where(gopgutil.BuildConditionLTE(gopgutil.AddAliasToColumnName("bonus", alias)), f.BonusLTE)
}
if !isZero(f.PlayerID) {
q = q.Where(gopgutil.BuildConditionArray(gopgutil.AddAliasToColumnName("player_id", alias)), pg.Array(f.PlayerID))
}
if !isZero(f.PlayerIDNEQ) {
q = q.Where(gopgutil.BuildConditionNotInArray(gopgutil.AddAliasToColumnName("player_id", alias)), pg.Array(f.PlayerIDNEQ))
}
if f.PlayerFilter != nil && playerRelationName != "" && tribeRelationName != "" {
return f.PlayerFilter.WhereWithAlias(q.Relation(playerRelationName), playerAlias, tribeRelationName, tribeAlias)
}
return q, nil
}
func (f *VillageFilter) Where(q *orm.Query) (*orm.Query, error) {
return f.WhereWithAlias(
q,
"village",
"Player._",
"player",
"Player.Tribe._",
"player__tribe",
)
}

View File

@ -1,4 +1,4 @@
package tw
package twurlbuilder
import "fmt"

View File

@ -1,12 +0,0 @@
package tw
import (
"github.com/tribalwarshelp/shared/models"
)
func VersionCodeFromServerKey(key string) models.VersionCode {
if len(key) < 2 {
return ""
}
return models.VersionCode(key[0:2])
}