extend DailyTribeStatsFilter and DailyPlayerStatsFilter | ennoblement pg_repository is now appending EnnoblementFilterOr | update schema | update github.com/tribalwarshelp/shared
This commit is contained in:
parent
df5398a9a0
commit
b3529e4a54
|
@ -34,6 +34,15 @@ func (repo *pgRepository) Fetch(ctx context.Context, cfg dailyplayerstats.FetchC
|
|||
if cfg.Filter.Sort != "" {
|
||||
query = query.Order(cfg.Filter.Sort)
|
||||
}
|
||||
|
||||
if cfg.Filter.PlayerFilter != nil {
|
||||
query = query.Relation("Player._").WhereStruct(cfg.Filter.PlayerFilter)
|
||||
if cfg.Filter.PlayerFilter.TribeFilter != nil {
|
||||
query = query.
|
||||
Join("LEFT JOIN ?SERVER.tribes AS tribe ON tribe.id = player.tribe_id").
|
||||
WhereStruct(cfg.Filter.PlayerFilter.TribeFilter)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if cfg.Count {
|
||||
|
|
|
@ -34,6 +34,10 @@ func (repo *pgRepository) Fetch(ctx context.Context, cfg dailytribestats.FetchCo
|
|||
if cfg.Filter.Sort != "" {
|
||||
query = query.Order(cfg.Filter.Sort)
|
||||
}
|
||||
|
||||
if cfg.Filter.TribeFilter != nil {
|
||||
query = query.Relation("Tribe._").WhereStruct(cfg.Filter.TribeFilter)
|
||||
}
|
||||
}
|
||||
|
||||
if cfg.Count {
|
||||
|
|
28
ennoblement/repository/helpers.go
Normal file
28
ennoblement/repository/helpers.go
Normal file
|
@ -0,0 +1,28 @@
|
|||
package repository
|
||||
|
||||
import (
|
||||
"github.com/go-pg/pg/v10"
|
||||
"github.com/go-pg/pg/v10/orm"
|
||||
|
||||
"github.com/tribalwarshelp/shared/models"
|
||||
)
|
||||
|
||||
func appendWhereClauseForEnnoblementFilterOr(or *models.EnnoblementFilterOr) func(*orm.Query) (*orm.Query, error) {
|
||||
return func(q *orm.Query) (*orm.Query, error) {
|
||||
if or != nil {
|
||||
if len(or.NewOwnerID) > 0 {
|
||||
q = q.WhereOr("new_owner_id IN (?)", pg.In(or.NewOwnerID))
|
||||
}
|
||||
if len(or.NewOwnerTribeID) > 0 {
|
||||
q = q.WhereOr("new_owner_tribe_id IN (?)", pg.In(or.NewOwnerTribeID))
|
||||
}
|
||||
if len(or.OldOwnerID) > 0 {
|
||||
q = q.WhereOr("old_owner_id IN (?)", pg.In(or.OldOwnerID))
|
||||
}
|
||||
if len(or.OldOwnerTribeID) > 0 {
|
||||
q = q.WhereOr("old_owner_tribe_id IN (?)", pg.In(or.OldOwnerTribeID))
|
||||
}
|
||||
}
|
||||
return q, nil
|
||||
}
|
||||
}
|
|
@ -34,6 +34,8 @@ func (repo *pgRepository) Fetch(ctx context.Context, cfg ennoblement.FetchConfig
|
|||
if cfg.Filter.Sort != "" {
|
||||
query = query.Order(cfg.Filter.Sort)
|
||||
}
|
||||
|
||||
query = query.WhereGroup(appendWhereClauseForEnnoblementFilterOr(cfg.Filter.Or))
|
||||
}
|
||||
|
||||
if cfg.Count {
|
||||
|
|
2
go.mod
2
go.mod
|
@ -16,7 +16,7 @@ require (
|
|||
github.com/pkg/errors v0.9.1
|
||||
github.com/segmentio/encoding v0.1.14 // indirect
|
||||
github.com/tribalwarshelp/map-generator v0.0.0-20200623143352-cc037d744be2
|
||||
github.com/tribalwarshelp/shared v0.0.0-20200716113106-11ff9ddf1bda
|
||||
github.com/tribalwarshelp/shared v0.0.0-20200717091627-87f23d34cff8
|
||||
github.com/vektah/gqlparser/v2 v2.0.1
|
||||
golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae // indirect
|
||||
google.golang.org/protobuf v1.25.0 // indirect
|
||||
|
|
2
go.sum
2
go.sum
|
@ -189,6 +189,8 @@ github.com/tribalwarshelp/shared v0.0.0-20200622084436-3a768c8bf574 h1:y2EoH6zRK
|
|||
github.com/tribalwarshelp/shared v0.0.0-20200622084436-3a768c8bf574/go.mod h1:tf+2yTHasV6jAF3V2deZ9slNoCyBzC0fMdTjI7clf6Y=
|
||||
github.com/tribalwarshelp/shared v0.0.0-20200716113106-11ff9ddf1bda h1:bMO271vY8rLlypSHzSfANe7rz7dUi/+uNkcv7qUOWxw=
|
||||
github.com/tribalwarshelp/shared v0.0.0-20200716113106-11ff9ddf1bda/go.mod h1:tf+2yTHasV6jAF3V2deZ9slNoCyBzC0fMdTjI7clf6Y=
|
||||
github.com/tribalwarshelp/shared v0.0.0-20200717091627-87f23d34cff8 h1:oHu1004MQm/Y/474uvp1iYAABQjSZsdrb3pxjRSdOb4=
|
||||
github.com/tribalwarshelp/shared v0.0.0-20200717091627-87f23d34cff8/go.mod h1:tf+2yTHasV6jAF3V2deZ9slNoCyBzC0fMdTjI7clf6Y=
|
||||
github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo=
|
||||
github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
|
||||
github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs=
|
||||
|
|
|
@ -3314,6 +3314,7 @@ type DailyPlayerStats {
|
|||
input DailyPlayerStatsFilter {
|
||||
playerID: [Int!]
|
||||
playerIDNEQ: [Int!]
|
||||
playerFilter: PlayerFilter
|
||||
|
||||
createDate: Time
|
||||
createDateGT: Time
|
||||
|
@ -3358,6 +3359,7 @@ type DailyTribeStats {
|
|||
input DailyTribeStatsFilter {
|
||||
tribeID: [Int!]
|
||||
tribeIDNEQ: [Int!]
|
||||
tribeFilter: TribeFilter
|
||||
|
||||
createDate: Time
|
||||
createDateGT: Time
|
||||
|
@ -3396,6 +3398,13 @@ type EnnoblementList {
|
|||
total: Int!
|
||||
}
|
||||
|
||||
input EnnoblementFilterOr {
|
||||
newOwnerID: [Int!]
|
||||
newOwnerTribeID: [Int!]
|
||||
oldOwnerID: [Int!]
|
||||
oldOwnerTribeID: [Int!]
|
||||
}
|
||||
|
||||
input EnnoblementFilter {
|
||||
villageID: [Int!]
|
||||
villageIDNEQ: [Int!]
|
||||
|
@ -3416,6 +3425,8 @@ input EnnoblementFilter {
|
|||
ennobledAtLT: Time
|
||||
ennobledAtLTE: Time
|
||||
|
||||
or: EnnoblementFilterOr
|
||||
|
||||
offset: Int
|
||||
limit: Int
|
||||
sort: String
|
||||
|
@ -17872,6 +17883,12 @@ func (ec *executionContext) unmarshalInputDailyPlayerStatsFilter(ctx context.Con
|
|||
if err != nil {
|
||||
return it, err
|
||||
}
|
||||
case "playerFilter":
|
||||
var err error
|
||||
it.PlayerFilter, err = ec.unmarshalOPlayerFilter2ᚖgithubᚗcomᚋtribalwarshelpᚋsharedᚋmodelsᚐPlayerFilter(ctx, v)
|
||||
if err != nil {
|
||||
return it, err
|
||||
}
|
||||
case "createDate":
|
||||
var err error
|
||||
it.CreateDate, err = ec.unmarshalOTime2timeᚐTime(ctx, v)
|
||||
|
@ -17944,6 +17961,12 @@ func (ec *executionContext) unmarshalInputDailyTribeStatsFilter(ctx context.Cont
|
|||
if err != nil {
|
||||
return it, err
|
||||
}
|
||||
case "tribeFilter":
|
||||
var err error
|
||||
it.TribeFilter, err = ec.unmarshalOTribeFilter2ᚖgithubᚗcomᚋtribalwarshelpᚋsharedᚋmodelsᚐTribeFilter(ctx, v)
|
||||
if err != nil {
|
||||
return it, err
|
||||
}
|
||||
case "createDate":
|
||||
var err error
|
||||
it.CreateDate, err = ec.unmarshalOTime2timeᚐTime(ctx, v)
|
||||
|
@ -18094,6 +18117,12 @@ func (ec *executionContext) unmarshalInputEnnoblementFilter(ctx context.Context,
|
|||
if err != nil {
|
||||
return it, err
|
||||
}
|
||||
case "or":
|
||||
var err error
|
||||
it.Or, err = ec.unmarshalOEnnoblementFilterOr2ᚖgithubᚗcomᚋtribalwarshelpᚋsharedᚋmodelsᚐEnnoblementFilterOr(ctx, v)
|
||||
if err != nil {
|
||||
return it, err
|
||||
}
|
||||
case "offset":
|
||||
var err error
|
||||
it.Offset, err = ec.unmarshalOInt2int(ctx, v)
|
||||
|
@ -18118,6 +18147,42 @@ func (ec *executionContext) unmarshalInputEnnoblementFilter(ctx context.Context,
|
|||
return it, nil
|
||||
}
|
||||
|
||||
func (ec *executionContext) unmarshalInputEnnoblementFilterOr(ctx context.Context, obj interface{}) (models.EnnoblementFilterOr, error) {
|
||||
var it models.EnnoblementFilterOr
|
||||
var asMap = obj.(map[string]interface{})
|
||||
|
||||
for k, v := range asMap {
|
||||
switch k {
|
||||
case "newOwnerID":
|
||||
var err error
|
||||
it.NewOwnerID, err = ec.unmarshalOInt2ᚕintᚄ(ctx, v)
|
||||
if err != nil {
|
||||
return it, err
|
||||
}
|
||||
case "newOwnerTribeID":
|
||||
var err error
|
||||
it.NewOwnerTribeID, err = ec.unmarshalOInt2ᚕintᚄ(ctx, v)
|
||||
if err != nil {
|
||||
return it, err
|
||||
}
|
||||
case "oldOwnerID":
|
||||
var err error
|
||||
it.OldOwnerID, err = ec.unmarshalOInt2ᚕintᚄ(ctx, v)
|
||||
if err != nil {
|
||||
return it, err
|
||||
}
|
||||
case "oldOwnerTribeID":
|
||||
var err error
|
||||
it.OldOwnerTribeID, err = ec.unmarshalOInt2ᚕintᚄ(ctx, v)
|
||||
if err != nil {
|
||||
return it, err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return it, nil
|
||||
}
|
||||
|
||||
func (ec *executionContext) unmarshalInputLangVersionFilter(ctx context.Context, obj interface{}) (models.LangVersionFilter, error) {
|
||||
var it models.LangVersionFilter
|
||||
var asMap = obj.(map[string]interface{})
|
||||
|
@ -24046,6 +24111,18 @@ func (ec *executionContext) unmarshalOEnnoblementFilter2ᚖgithubᚗcomᚋtribal
|
|||
return &res, err
|
||||
}
|
||||
|
||||
func (ec *executionContext) unmarshalOEnnoblementFilterOr2githubᚗcomᚋtribalwarshelpᚋsharedᚋmodelsᚐEnnoblementFilterOr(ctx context.Context, v interface{}) (models.EnnoblementFilterOr, error) {
|
||||
return ec.unmarshalInputEnnoblementFilterOr(ctx, v)
|
||||
}
|
||||
|
||||
func (ec *executionContext) unmarshalOEnnoblementFilterOr2ᚖgithubᚗcomᚋtribalwarshelpᚋsharedᚋmodelsᚐEnnoblementFilterOr(ctx context.Context, v interface{}) (*models.EnnoblementFilterOr, error) {
|
||||
if v == nil {
|
||||
return nil, nil
|
||||
}
|
||||
res, err := ec.unmarshalOEnnoblementFilterOr2githubᚗcomᚋtribalwarshelpᚋsharedᚋmodelsᚐEnnoblementFilterOr(ctx, v)
|
||||
return &res, err
|
||||
}
|
||||
|
||||
func (ec *executionContext) unmarshalOInt2int(ctx context.Context, v interface{}) (int, error) {
|
||||
return graphql.UnmarshalInt(v)
|
||||
}
|
||||
|
|
|
@ -78,6 +78,8 @@ models:
|
|||
model: github.com/tribalwarshelp/shared/models.Ennoblement
|
||||
EnnoblementFilter:
|
||||
model: github.com/tribalwarshelp/shared/models.EnnoblementFilter
|
||||
EnnoblementFilterOr:
|
||||
model: github.com/tribalwarshelp/shared/models.EnnoblementFilterOr
|
||||
PlayerHistoryRecord:
|
||||
model: github.com/tribalwarshelp/shared/models.PlayerHistory
|
||||
PlayerHistoryFilter:
|
||||
|
|
|
@ -22,6 +22,7 @@ type DailyPlayerStats {
|
|||
input DailyPlayerStatsFilter {
|
||||
playerID: [Int!]
|
||||
playerIDNEQ: [Int!]
|
||||
playerFilter: PlayerFilter
|
||||
|
||||
createDate: Time
|
||||
createDateGT: Time
|
||||
|
|
|
@ -23,6 +23,7 @@ type DailyTribeStats {
|
|||
input DailyTribeStatsFilter {
|
||||
tribeID: [Int!]
|
||||
tribeIDNEQ: [Int!]
|
||||
tribeFilter: TribeFilter
|
||||
|
||||
createDate: Time
|
||||
createDateGT: Time
|
||||
|
|
|
@ -12,6 +12,13 @@ type EnnoblementList {
|
|||
total: Int!
|
||||
}
|
||||
|
||||
input EnnoblementFilterOr {
|
||||
newOwnerID: [Int!]
|
||||
newOwnerTribeID: [Int!]
|
||||
oldOwnerID: [Int!]
|
||||
oldOwnerTribeID: [Int!]
|
||||
}
|
||||
|
||||
input EnnoblementFilter {
|
||||
villageID: [Int!]
|
||||
villageIDNEQ: [Int!]
|
||||
|
@ -32,6 +39,8 @@ input EnnoblementFilter {
|
|||
ennobledAtLT: Time
|
||||
ennobledAtLTE: Time
|
||||
|
||||
or: EnnoblementFilterOr
|
||||
|
||||
offset: Int
|
||||
limit: Int
|
||||
sort: String
|
||||
|
|
Reference in New Issue
Block a user