diff --git a/models/daily_player_stats.go b/models/daily_player_stats.go index 8669525..99f7ced 100644 --- a/models/daily_player_stats.go +++ b/models/daily_player_stats.go @@ -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"` } diff --git a/models/daily_tribe_stats.go b/models/daily_tribe_stats.go index 3f68e7f..91e7208 100644 --- a/models/daily_tribe_stats.go +++ b/models/daily_tribe_stats.go @@ -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"` } diff --git a/models/ennoblement.go b/models/ennoblement.go index a7919a7..9a9d372 100644 --- a/models/ennoblement.go +++ b/models/ennoblement.go @@ -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 }