[WIP] update DailyTribeStatsFilter/DailyPlayerStatsFilter, add DailyPlayerStatsRelationshipAndSortAppender/DailyTribeStatsRelationshipAndSortAppender
This commit is contained in:
parent
a8cdb0425a
commit
23b845528c
|
@ -1,6 +1,11 @@
|
|||
package models
|
||||
|
||||
import "time"
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/go-pg/pg/v10"
|
||||
"github.com/go-pg/pg/v10/orm"
|
||||
)
|
||||
|
||||
type DailyPlayerStats struct {
|
||||
tableName struct{} `pg:"?SERVER.daily_player_stats,alias:daily_player_stats"`
|
||||
|
@ -17,8 +22,8 @@ type DailyPlayerStats struct {
|
|||
|
||||
type DailyPlayerStatsFilter struct {
|
||||
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"`
|
||||
PlayerIDNEQ []int `json:"playerIDNEQ" gqlgen:"playerIDNEQ" xml:"playerIDNEQ"`
|
||||
PlayerFilter *PlayerFilter `json:"playerFilter" gqlgen:"playerFilter" xml:"playerFilter"`
|
||||
|
||||
CreateDate time.Time `json:"createDate" gqlgen:"createDate" xml:"createDate"`
|
||||
CreateDateGT time.Time `json:"createDateGT" gqlgen:"createDateGT" xml:"createDateGT"`
|
||||
|
@ -26,3 +31,73 @@ type DailyPlayerStatsFilter struct {
|
|||
CreateDateLT time.Time `json:"createDateLT" gqlgen:"createDateLT" xml:"createDateLT"`
|
||||
CreateDateLTE time.Time `json:"createDateLTE" gqlgen:"createDateLTE" xml:"createDateLTE"`
|
||||
}
|
||||
|
||||
func (f *DailyPlayerStatsFilter) WhereWithAlias(q *orm.Query, alias string) (*orm.Query, error) {
|
||||
if !isZero(f.CreateDate) {
|
||||
q = q.Where(buildConditionEquals(addAliasToColumnName("create_date", alias)), f.CreateDate)
|
||||
}
|
||||
if !isZero(f.CreateDateGT) {
|
||||
q = q.Where(buildConditionGT(addAliasToColumnName("create_date", alias)), f.CreateDateGT)
|
||||
}
|
||||
if !isZero(f.CreateDateGTE) {
|
||||
q = q.Where(buildConditionGTE(addAliasToColumnName("create_date", alias)), f.CreateDateGTE)
|
||||
}
|
||||
if !isZero(f.CreateDateLT) {
|
||||
q = q.Where(buildConditionLT(addAliasToColumnName("create_date", alias)), f.CreateDateLT)
|
||||
}
|
||||
if !isZero(f.CreateDateLTE) {
|
||||
q = q.Where(buildConditionLTE(addAliasToColumnName("create_date", alias)), f.CreateDateLTE)
|
||||
}
|
||||
|
||||
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 *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
|
||||
}
|
||||
|
|
|
@ -2,6 +2,9 @@ package models
|
|||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/go-pg/pg/v10"
|
||||
"github.com/go-pg/pg/v10/orm"
|
||||
)
|
||||
|
||||
type DailyTribeStats struct {
|
||||
|
@ -22,8 +25,8 @@ type DailyTribeStats struct {
|
|||
|
||||
type DailyTribeStatsFilter struct {
|
||||
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"`
|
||||
TribeIDNEQ []int `json:"tribeIDNEQ" gqlgen:"tribeIDNEQ" xml:"tribeIDNEQ"`
|
||||
TribeFilter *TribeFilter `json:"tribeFilter" gqlgen:"tribeFilter" xml:"tribeFilter"`
|
||||
|
||||
CreateDate time.Time `json:"createDate" gqlgen:"createDate" xml:"createDate"`
|
||||
CreateDateGT time.Time `json:"createDateGT" gqlgen:"createDateGT" xml:"createDateGT"`
|
||||
|
@ -31,3 +34,61 @@ type DailyTribeStatsFilter struct {
|
|||
CreateDateLT time.Time `json:"createDateLT" gqlgen:"createDateLT" xml:"createDateLT"`
|
||||
CreateDateLTE time.Time `json:"createDateLTE" gqlgen:"createDateLTE" xml:"createDateLTE"`
|
||||
}
|
||||
|
||||
func (f *DailyTribeStatsFilter) WhereWithAlias(q *orm.Query, alias string) (*orm.Query, error) {
|
||||
if !isZero(f.CreateDate) {
|
||||
q = q.Where(buildConditionEquals(addAliasToColumnName("create_date", alias)), f.CreateDate)
|
||||
}
|
||||
if !isZero(f.CreateDateGT) {
|
||||
q = q.Where(buildConditionGT(addAliasToColumnName("create_date", alias)), f.CreateDateGT)
|
||||
}
|
||||
if !isZero(f.CreateDateGTE) {
|
||||
q = q.Where(buildConditionGTE(addAliasToColumnName("create_date", alias)), f.CreateDateGTE)
|
||||
}
|
||||
if !isZero(f.CreateDateLT) {
|
||||
q = q.Where(buildConditionLT(addAliasToColumnName("create_date", alias)), f.CreateDateLT)
|
||||
}
|
||||
if !isZero(f.CreateDateLTE) {
|
||||
q = q.Where(buildConditionLTE(addAliasToColumnName("create_date", alias)), f.CreateDateLTE)
|
||||
}
|
||||
|
||||
if !isZero(f.TribeID) {
|
||||
q = q.Where(buildConditionArray(addAliasToColumnName("tribe_id", alias)), pg.Array(f.TribeID))
|
||||
}
|
||||
if !isZero(f.TribeIDNEQ) {
|
||||
q = q.Where(buildConditionNotInArray(addAliasToColumnName("tribe_id", alias)), pg.Array(f.TribeIDNEQ))
|
||||
}
|
||||
|
||||
return q, nil
|
||||
}
|
||||
|
||||
func (f *DailyTribeStatsFilter) Where(q *orm.Query) (*orm.Query, error) {
|
||||
return f.WhereWithAlias(q, "daily_tribe_stats")
|
||||
}
|
||||
|
||||
type DailyTibeStatsRelationshipAndSortAppender struct {
|
||||
Filter *DailyTribeStatsFilter
|
||||
Sort []string
|
||||
}
|
||||
|
||||
func (a *DailyTibeStatsRelationshipAndSortAppender) 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
|
||||
}
|
||||
|
|
|
@ -56,7 +56,7 @@ type TribeChangeFilter struct {
|
|||
CreatedAtLT time.Time `json:"createdAtLT" gqlgen:"createdAtLT" xml:"createdAtLT"`
|
||||
CreatedAtLTE time.Time `json:"createdAtLTE" gqlgen:"createdAtLTE" xml:"createdAtLTE"`
|
||||
|
||||
Or *TribeChangeFilterOr `urlstruct:",nowhere" json:"or" gqlgen:"or" xml:"or"`
|
||||
Or *TribeChangeFilterOr `json:"or" gqlgen:"or" xml:"or"`
|
||||
}
|
||||
|
||||
func (f *TribeChangeFilter) WhereWithAlias(q *orm.Query, alias string) (*orm.Query, error) {
|
||||
|
|
Reference in New Issue