[WIP] update EnnoblementFilter, add EnnoblementRelationshipAndSortAppender

This commit is contained in:
Dawid Wysokiński 2021-01-06 16:07:14 +01:00
parent fe0c688b47
commit a8cdb0425a
3 changed files with 175 additions and 30 deletions

View File

@ -16,8 +16,6 @@ type DailyPlayerStats struct {
}
type DailyPlayerStatsFilter struct {
tableName struct{} `urlstruct:"daily_player_stats"`
PlayerID []int `json:"playerID" gqlgen:"playerID" xml:"playerID"`
PlayerIdNEQ []int `json:"playerIDNEQ" gqlgen:"playerIDNEQ" xml:"playerIDNEQ"`
PlayerFilter *PlayerFilter `urlstruct:",nowhere" json:"playerFilter" gqlgen:"playerFilter" xml:"playerFilter"`
@ -27,8 +25,4 @@ type DailyPlayerStatsFilter struct {
CreateDateGTE time.Time `json:"createDateGTE" gqlgen:"createDateGTE" xml:"createDateGTE"`
CreateDateLT time.Time `json:"createDateLT" gqlgen:"createDateLT" xml:"createDateLT"`
CreateDateLTE time.Time `json:"createDateLTE" gqlgen:"createDateLTE" xml:"createDateLTE"`
Offset int `urlstruct:",nowhere" json:"offset" gqlgen:"offset" xml:"offset"`
Limit int `urlstruct:",nowhere" json:"limit" gqlgen:"limit" xml:"limit"`
Sort string `urlstruct:",nowhere" json:"sort" gqlgen:"sort" xml:"sort"`
}

View File

@ -21,8 +21,6 @@ type DailyTribeStats struct {
}
type DailyTribeStatsFilter struct {
tableName struct{} `urlstruct:"daily_tribe_stats"`
TribeID []int `json:"tribeID" gqlgen:"tribeID" xml:"tribeID"`
TribeIdNEQ []int `json:"tribeIDNEQ" gqlgen:"tribeIDNEQ" xml:"tribeIDNEQ"`
TribeFilter *TribeFilter `urlstruct:",nowhere" json:"tribeFilter" gqlgen:"tribeFilter" xml:"tribeFilter"`
@ -32,8 +30,4 @@ type DailyTribeStatsFilter struct {
CreateDateGTE time.Time `json:"createDateGTE" gqlgen:"createDateGTE" xml:"createDateGTE"`
CreateDateLT time.Time `json:"createDateLT" gqlgen:"createDateLT" xml:"createDateLT"`
CreateDateLTE time.Time `json:"createDateLTE" gqlgen:"createDateLTE" xml:"createDateLTE"`
Offset int `urlstruct:",nowhere" json:"offset" gqlgen:"offset" xml:"offset"`
Limit int `urlstruct:",nowhere" json:"limit" gqlgen:"limit" xml:"limit"`
Sort string `urlstruct:",nowhere" json:"sort" gqlgen:"sort" xml:"sort"`
}

View File

@ -1,6 +1,11 @@
package models
import "time"
import (
"time"
"github.com/go-pg/pg/v10"
"github.com/go-pg/pg/v10/orm"
)
type Ennoblement struct {
tableName struct{} `pg:"?SERVER.ennoblements,alias:ennoblement"`
@ -25,21 +30,43 @@ type EnnoblementFilterOr struct {
OldOwnerTribeID []int `json:"oldOwnerTribeID" gqlgen:"oldOwnerTribeID" xml:"oldOwnerTribeID"`
}
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
})
return q
}
type EnnoblementFilter struct {
tableName struct{} `urlstruct:"ennoblement"`
VillageID []int `json:"villageID" gqlgen:"villageID" xml:"villageID"`
VillageIDNEQ []int `json:"villageIDNEQ" gqlgen:"villageIDNEQ" xml:"villageIDNEQ"`
VillageFilter *VillageFilter `json:"villageFilter" xml:"villageFilter" gqlgen:"villageFilter"`
VillageID []int `json:"villageID" gqlgen:"villageID" xml:"villageID"`
VillageIdNEQ []int `json:"villageIDNEQ" gqlgen:"villageIDNEQ" xml:"villageIDNEQ"`
NewOwnerID []int `json:"newOwnerID" gqlgen:"newOwnerID" xml:"newOwnerID"`
NewOwnerIDNEQ []int `json:"newOwnerIDNEQ" gqlgen:"newOwnerIDNEQ" xml:"newOwnerIDNEQ"`
NewOwnerFilter *PlayerFilter `json:"newOwnerFilter" xml:"newOwnerFilter" gqlgen:"newOwnerFilter"`
NewOwnerTribeID []int `json:"newOwnerTribeID" gqlgen:"newOwnerTribeID" xml:"newOwnerTribeID"`
NewOwnerTribeIDNEQ []int `json:"newOwnerTribeIDNEQ" gqlgen:"newOwnerTribeIDNEQ" xml:"newOwnerTribeIDNEQ"`
NewOwnerTribeFilter *TribeFilter `json:"newOwnerTribeFilter" xml:"newOwnerTribeFilter" gqlgen:"newOwnerTribeFilter"`
NewOwnerID []int `json:"newOwnerID" gqlgen:"newOwnerID" xml:"newOwnerID"`
NewOwnerIdNEQ []int `json:"newOwnerIdNEQ" gqlgen:"newOwnerIdNEQ" xml:"newOwnerIdNEQ"`
NewOwnerTribeID []int `json:"newOwnerTribeID" gqlgen:"newOwnerTribeID" xml:"newOwnerTribeID"`
NewOwnerTribeIdNEQ []int `json:"newOwnerTribeIDNEQ" gqlgen:"newOwnerTribeIDNEQ" xml:"newOwnerTribeIDNEQ"`
OldOwnerID []int `json:"oldOwnerID" gqlgen:"oldOwnerID" xml:"oldOwnerID"`
OldOwnerIdNEQ []int `json:"oldOwnerIdNEQ" gqlgen:"oldOwnerIdNEQ" xml:"oldOwnerIdNEQ"`
OldOwnerTribeID []int `json:"oldOwnerTribeID" gqlgen:"oldOwnerTribeID" xml:"oldOwnerTribeID"`
OldOwnerTribeIdNEQ []int `json:"oldOwnerTribeIDNEQ" gqlgen:"oldOwnerTribeIDNEQ" xml:"oldOwnerTribeIDNEQ"`
OldOwnerID []int `json:"oldOwnerID" gqlgen:"oldOwnerID" xml:"oldOwnerID"`
OldOwnerIDNEQ []int `json:"oldOwnerIDNEQ" gqlgen:"oldOwnerIDNEQ" xml:"oldOwnerIDNEQ"`
OldOwnerFilter *PlayerFilter `json:"oldOwnerFilter" xml:"oldOwnerFilter" gqlgen:"oldOwnerFilter"`
OldOwnerTribeID []int `json:"oldOwnerTribeID" gqlgen:"oldOwnerTribeID" xml:"oldOwnerTribeID"`
OldOwnerTribeIDNEQ []int `json:"oldOwnerTribeIDNEQ" gqlgen:"oldOwnerTribeIDNEQ" xml:"oldOwnerTribeIDNEQ"`
OldOwnerTribeFilter *TribeFilter `json:"oldOwnerTribeFilter" xml:"oldOwnerTribeFilter" gqlgen:"oldOwnerTribeFilter"`
EnnobledAt time.Time `json:"ennobledAt" gqlgen:"ennobledAt" xml:"ennobledAt"`
EnnobledAtGT time.Time `json:"ennobledAtGT" gqlgen:"ennobledAtGT" xml:"ennobledAtGT"`
@ -47,9 +74,139 @@ type EnnoblementFilter struct {
EnnobledAtLT time.Time `json:"ennobledAtLT" gqlgen:"ennobledAtLT" xml:"ennobledAtLT"`
EnnobledAtLTE time.Time `json:"ennobledAtLTE" gqlgen:"ennobledAtLTE" xml:"ennobledAtLTE"`
Or *EnnoblementFilterOr `urlstruct:",nowhere" json:"or" gqlgen:"or" xml:"or"`
Offset int `urlstruct:",nowhere" json:"offset" gqlgen:"offset" xml:"offset"`
Limit int `urlstruct:",nowhere" json:"limit" gqlgen:"limit" xml:"limit"`
Sort string `urlstruct:",nowhere" json:"sort" gqlgen:"sort" xml:"sort"`
Or *EnnoblementFilterOr `json:"or" gqlgen:"or" xml:"or"`
}
func (f *EnnoblementFilter) WhereWithAlias(q *orm.Query, alias string) (*orm.Query, error) {
if !isZero(f.EnnobledAt) {
q = q.Where(buildConditionEquals(addAliasToColumnName("ennobled_at", alias)), f.EnnobledAt)
}
if !isZero(f.EnnobledAtGT) {
q = q.Where(buildConditionGT(addAliasToColumnName("ennobled_at", alias)), f.EnnobledAtGT)
}
if !isZero(f.EnnobledAtGTE) {
q = q.Where(buildConditionGTE(addAliasToColumnName("ennobled_at", alias)), f.EnnobledAtGTE)
}
if !isZero(f.EnnobledAtLT) {
q = q.Where(buildConditionLT(addAliasToColumnName("ennobled_at", alias)), f.EnnobledAtLT)
}
if !isZero(f.EnnobledAtLTE) {
q = q.Where(buildConditionLTE(addAliasToColumnName("ennobled_at", alias)), f.EnnobledAtLTE)
}
if !isZero(f.VillageID) {
q = q.Where(buildConditionArray(addAliasToColumnName("village_id", alias)), pg.Array(f.VillageID))
}
if !isZero(f.VillageIDNEQ) {
q = q.Where(buildConditionNotInArray(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))
}
if !isZero(f.NewOwnerIDNEQ) {
q = q.Where(buildConditionNotInArray(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))
}
if !isZero(f.NewOwnerTribeIDNEQ) {
q = q.Where(buildConditionNotInArray(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))
}
if !isZero(f.OldOwnerIDNEQ) {
q = q.Where(buildConditionNotInArray(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))
}
if !isZero(f.OldOwnerTribeIDNEQ) {
q = q.Where(buildConditionNotInArray(addAliasToColumnName("old_owner_tribe_id", alias)), pg.Array(f.OldOwnerTribeIDNEQ))
}
if f.Or != nil {
q = f.Or.WhereWithAlias(q, alias)
}
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
}